需要帮助,通过导入ip / mac条目列表文件来配置强大的防火墙CLI代码以进行批量ipmacbinding

时间:2016-03-09 13:16:38

标签: python perl command-line-interface firewall

我在fortigate 200d中遇到ip / mac绑定问题,问题是我有一个3000条IP / MAC地址列表,我把它们保存在csv文件中。

这就是我要找的东西

1.我想编写一个可以导入该文件的代码

2.我希望在循环中执行此代码片段,直到所有条目都更新为止。

config firewall ipmacbinding table
edit <index_int>
    set ip <address_ipv4>
    set mac <address_hex>
    set name <name_str>
    set status {enable}
end
  1. 在上面的代码片段的帮助下,每次我必须手动输入IP,MAC和名称值3000次,而我只想导入一个文件并从该文件中添加值。

  2. 在很少的地方我发现它可以在perl / python脚本的帮助下实现,但我不知道。

  3. 我用谷歌搜索但我没有找到关于这些信息的任何地方,所以我希望我能得到帮助来完成这项任务。

    感谢。

    CSV文件格式为

    Index   IP       Mac                name
    1   10.10.17.1  aa:bb:cc:00:11:22   first
    2   10.10.17.2  cc:dd:ee:ff:22:33   second
    3   10.10.17.3  33:44:11:3f:00:88   third
    

    Formal of CSV File

1 个答案:

答案 0 :(得分:1)

我从未使用过强制CLI,所以我会假设你知道它是如何工作的以及如何处理它。下面是一个小尝试,如果它不能正常工作将有希望让你在正确的轨道上。我假设当你运行config命令时,终端通常会等待用户输入。所以在这种情况下,perl脚本将管道输入。

use strict;
use warnings;

my $csv_file = shift;
open (my $cfh, '<', $csv_file) or die "Unable to open $csv_file: $!";
my @headers = split (' ', <$cfh>);

while(<$cfh>){
  my %config;
  my @data = split(' ');
  @config{@headers}=@data;

  open(my $firewall, '|-', 'config firewall ipmacbinding table') or die "Unable to open 'config firewall ipmacbinding table': $!";
  print $firewall "edit ",$config{'Index'},"\n";
  print $firewall "set ip ",$config{'IP'},"\n";
  print $firewall "set mac ",$config{'Mac'},"\n";
  print $firewall "set name ",$config{'name'},"\n";
  print $firewall "set status {enable}\n";
  print $firewall "end\n";
  close $firewall;
}

以上内容是为了帮助您开始如何使这项工作。正如我所说,我没有使用fotigate的经验所以你可能需要稍微调整一下。

如果我选择将此打印到我的终端屏幕上作为此输出

use strict;
use warnings;

my $csv_file = shift;
open (my $cfh, '<', $csv_file) or die "Unable to open $csv_file: $!";
my @headers = split (' ', <$cfh>);

while(<$cfh>){
        my %config;
        my @data = split(' ');
        @config{@headers}=@data;

        #open(my $firewall, '|-', 'config firewall ipmacbinding table') or die "Unable to open 'config firewall ipmacbinding table': $!";
        print  "config firewall ipmacbinding table\n";
        print  "\tedit ",$config{'Index'},"\n";
        print  "\tset ip ",$config{'IP'},"\n";
        print  "\tset mac ",$config{'Mac'},"\n";
        print  "\tset name ",$config{'name'},"\n";
        print  "\tset status {enable}\n";
        print  "end\n";
        #close $firewall;
}

它产生以下

config firewall ipmacbinding table
        edit 1
        set ip 10.10.17.1
        set mac aa:bb:cc:00:11:22
        set name first
        set status {enable}
end
config firewall ipmacbinding table
        edit 2
        set ip 10.10.17.2
        set mac cc:dd:ee:ff:22:33
        set name second
        set status {enable}
end
config firewall ipmacbinding table
        edit 3
        set ip 10.10.17.3
        set mac 33:44:11:3f:00:88
        set name third
        set status {enable}
end

希望这足以让你开始。