我在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
在上面的代码片段的帮助下,每次我必须手动输入IP,MAC和名称值3000次,而我只想导入一个文件并从该文件中添加值。
在很少的地方我发现它可以在perl / python脚本的帮助下实现,但我不知道。
我用谷歌搜索但我没有找到关于这些信息的任何地方,所以我希望我能得到帮助来完成这项任务。
感谢。
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
答案 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
希望这足以让你开始。