Cisco機器のstartup-configを収集する。
このコード以外に/home/raino配下に「hostlist.csv」というファイルが必要。内容は、
ホスト名,IPアドレス,ログインパスワード,特権パスワード
と、CSV風に1行1ホスト分、何行でも可。スクリプトを実行すると勝手にディレクトリを生成してコンフィグを突っ込みまくります。対象ホストが多いと時間かかるのが難点。

#!/usr/bin/perl
use strict;
use warnings;
use Net::Telnet::Cisco;

open ( SW, "/home/raino/hostlist.csv" );
my @time = localtime;
my $date = sprintf("%04d%02d%02d", $time[5]+1900, $time[4]+1, $time[3]);
mkdir "/home/raino/sw-conf.$date";

while (<SW>){
  chomp;
###HOSTLIST INTO ARRAY###
  my $tmp = $_;
  $tmp =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/;
  my @val = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_}
         ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);
###LOGIN AND CHANGE ENABLE###
  my $session = Net::Telnet::Cisco->new(Host => $val[1]);
  $session->login('user', $val[2]);
  $session->enable("$val[3]");
###FILE HANDLE CHANGE###
  open ( BACK, ">/home/raino/sw-conf.$date/$val[0]" );
  select "BACK";
###BACKUP STARTUP-CONFIG(/home/raino/sw-conf.yyyymmdd/SW-NAME###
  my @output = $session->cmd('show startup-config');
  print @output;
###END###
  $session->close;
}
最終更新:2007年02月21日 16:03