2011-09-10 43 views
0
#!/usr/bin/perl 
use warnings; 
while(1){ 
system ("dialog --menu Customize 30 80 60 " 
     . "'Show rules' 'Show all the current rules' " 
     . "'Flush rules' 'Flush all the tables' " 
    . "Allow IP' 'Block all except one IP' " 
    . "'Block IP' 'Block all the packets from an IP' " 
    . "'Block MAC' 'Block using the hardware address' " 
     . "'Private networking' 'Allow only one network and block other networks' " 
    . "'Allow lo' 'Allow local network interface' " 
    . "'Save' 'Save customized rules' " 
    . "'Exit' 'Close the program' " 
     . "'more options' '........' 2> /tmp/customize.txt"); 

open FILE4, "/tmp/customize.txt" or die $!; 
chomp(my $customize = <FILE4>); 
     #SHOW RULES 
       if($customize =~ /Show rules/){ 
     `iptables -nvL | tee /tmp/nvl.txt`; 
       system ("dialog --textbox /tmp/nvl.txt 22 70"); 
       } 
     #FLUSH RULES 
     elsif($customize =~ /Flush rules/){ 
     `iptables -F`; 
     system ("dialog --infobox 'All tables have been flushed.' 05 35"); 
     sleep 2; 
     } 
     #ALLOW IP 
     elsif($customize =~ /Allow IP/){ 
     system ("dialog --inputbox 'Enter the IP address of the sysetm which you want to allow:' 15 40 2> /tmp/allowIP.txt"); 
     open FILE7, "/tmp/allowIP.txt" or die $!; 
     chomp(my $aip = <FILE7>); 
     `iptables -I INPUT -s $aip -j DROP`; 
     system ("dialog --infobox 'IP address $aip is allowed and rest are blocked' 05 45"); 
     sleep 2; 
     } 
     #BLOCK IP 
     elsif($customize =~ /Block IP/){ 
     system ("dialog --inputbox 'Enter the IP address of the system which you want to block:' 15 40 2> /tmp/blockIP.txt"); 
     open FILE5, "/tmp/blockIP.txt" or die $!; 
     chomp(my $ip = <FILE5>); 
     `iptables -A INPUT -s $ip -j DROP`; 
     system ("dialog --infobox 'IP address $ip has been blocked!' 05 35"); 
     sleep 2; 
     } 
     #PRIVATE NETWORK  
     elsif($customize =~ /Private networking/){ 
     system ("dialog --inputbox 'Enter the network address which you want to allow (eg. 192.168.0.0/24)' 15 40 2> /tmp/network.txt"); 
     open FILE6, "/tmp/network.txt" or die $!; 
     chomp(my $network = <FILE6>); 
     `iptables -I INPUT -s $network -j ACCEPT`; 
     system ("dialog --infobox 'Network $network is allowed and rest networks are blocked' 05 35"); 
     sleep 2; 
     } 
     #ALLOW LO 
     elsif($customize =~ /Allow lo/){ 
     `iptables -I INPUT -i lo -j ACCEPT`; 
     system ("dialog --infobox 'Local interface is allowed.' 05 35"); 
     sleep 2; 
     } 
     #SAVE 
     elsif($customize =~ /Save/){ 
     `service iptables save`; 
     system ("dialog --infobox 'All rules have been saved successfully' 05 45"); 
     sleep 2; 
     } 
     #EXIT 
     elsif($customize =~ /Exit/){ 
     system ("dialog --infobox 'Closing application.' 05 35"); 
     sleep 2; 
     exit 0; 
     } 
       else{ 
         exit; 
       } 
} 

perl的file.plx意外EOF'”'

错误

sh: -c: line 0: unexpected EOF while looking for matching `'' 
sh: -c: line 1: syntax error: unexpected end of file 

如何解决这个问题?

回答

6

缺少'这里:"Allow IP'

+0

哈哈,多么愚蠢的错误。谢谢yi_H :) –

1

你在

. "Allow IP' 'Block all except one IP' " 

在你的Perl代码7行忘了'Allow IP'之前。