我有一个配置文件,需要导入一个IP列表并像这样显示它们
acl ip_1 myip 1.1.1.1
tcp_outgoing_address 1.1.1.1 ip_1
cl ip_2 myip 1.1.1.2
tcp_outgoing_address 1.1.1.2 ip_2
cl ip_2 myip 1.1.1.3
tcp_outgoing_address 1.1.1.3 ip_3
等等。
我找到了这个脚本,但问题是它只会执行ip_1和ip_2。我要导入数百个IP。
se strict;
use warnings;
open (my $tmph,"<", $ARGV[0]) or die "Error open file $ARGV[0]";
while (<$tmph>)
{
chomp;
my $line=$_;
if ($line=~/\d+\.\d+\.\d+\.\d+/)
{
print ("acl ip1 myip $line\n");
print ("tcp_outgoing_address $line ip1\n\n");
print ("acl ip2 myip $line\n");
print ("tcp_outgoing_address $line ip2\n\n");
}
}
close ($tmph);
非常感谢任何帮助。
答案 0 :(得分:1)
我编辑了您的代码,如下所示
#!/usr/bin/perl
use strict;
use warnings;
my $n = 1;
open (my $tmph,"<", $ARGV[0]) or die "Error open file $ARGV[0]";
while (<$tmph>)
{
chomp;
my $line=$_;
if ($line=~/\d+\.\d+\.\d+\.\d+/)
{
print ("acl ip$n myip $line\n");
print ("tcp_outgoing_address $line ip$n\n\n");
$n++;
}
}
close ($tmph);
脚本输出
perl do.pl ip.txt
acl ip1 myip 1.2.3.4
tcp_outgoing_address 1.2.3.4 ip1
acl ip2 myip 10.0.0.10
tcp_outgoing_address 10.0.0.10 ip2
acl ip3 myip 192.168.0.10
tcp_outgoing_address 192.168.0.10 ip3
acl ip4 myip 10.0.0.30
tcp_outgoing_address 10.0.0.30 ip4