需要帮助将IP列表自动化到文件中

时间:2015-02-15 00:31:23

标签: perl

我有一个配置文件,需要导入一个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);

非常感谢任何帮助。

1 个答案:

答案 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