Home » FreeBSD » Cisco config backup Tool (Tag: , )

Cisco config backup Tool

2013/03/28 07:35

現在 Drive Network では L2, L3 スイッチが 20 台以上が稼働しています。過去 10 年程 Cisco Catalyst シリーズを使用して来て物理障害は一度もありませんが、設定内容のバックアップは設定変更毎に採集しています。

tftp を用いる方法等様々ありますが、私は Net::Telnet::Cisco を用いた Perl のプログラムが最もシンプルだと感じました。

./get.pl name とするだけで、show runnning-config, show vlan, show interfaces status の結果をファイルに出力します。スイッチ間での設定内容の整合性の確認等でも出力したファイルを操作した方が効率的です。

#!/usr/bin/perl -w
#
# get.pl
#

#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#// use Module
#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

use strict;

use Net::Telnet::Cisco;

#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#// Controller
#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

    my $target = $ARGV[0];

    #// ----------------------------------------------------------
    #// Item Set
    #// ----------------------------------------------------------

    my $pass_vt = 'password0';   #// login
    my $pass_en = 'password';    #// enable

    my $list = {
        'sw00' => '192.168.20.10',
        'sw01' => '192.168.20.11',
    };

    #// ----------------------------------------------------------
    #// Start
    #// ----------------------------------------------------------

    foreach (%$list) {
        next unless ($list->{$_});

        if ($target) {
            next unless ($target eq $_);
        }

        my $addr = $list->{$_};
        my $host = $_;

        my $sess = Net::Telnet::Cisco->new(Host => $addr);

        $sess->login(Password => $pass_vt);
        $sess->enable($pass_en);

        my @cmd0 = $sess->cmd('show run');
        my @cmd1 = $sess->cmd('show vlan');
        my @cmd2 = $sess->cmd('show int status');

        $sess->close;

        #//

        my $date = substr(utime2date(time()), 0, 10);
        $date =~ s/\///g;

        my $file0 = $host . '_' . $date . '.run';
        my $file1 = $host . '_' . $date . '.vlan';
        my $file2 = $host . '_' . $date . '.stat';

        open WRITE, "+>$file0";

        foreach my $cmd (@cmd0) {
            next if ($cmd =~ /^Building/);
            #next if ($cmd =~ /^\n$/);
            next if ($cmd =~ /^Current/);

            print WRITE $cmd;
        }

        close WRITE;

        open WRITE, "+>$file1";

        foreach my $cmd (@cmd1) {
            print WRITE $cmd;
        }

        close WRITE;

        open WRITE, "+>$file2";

        foreach my $cmd (@cmd2) {
            print WRITE $cmd;
        }

        close WRITE;

        #//

        print "Done: $host\n";
    }

#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#// Model
#// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

sub utime2date {
    my ($sec, $min, $hours, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($_[0]);

    my $years    = $year + 1900;
    my $this_mon = sprintf("%02d",$mon + 1);

    $mday  = sprintf("%02d", "$mday");
    $hours = sprintf("%02d", "$hours");
    $min   = sprintf("%02d", "$min");
    $sec   = sprintf("%02d", "$sec");

    my $date = "$years/$this_mon/$mday $hours:$min:$sec";

    return $date;
}

Random Select

Ti picchio
最近 facebook で 以前の職場 のメンバーを登録し始めました。もう 10 年以上会っていない人達がコツコツ集まってくるにつれ、"やっぱり久しぶりに会いたいよね" ということ
My Select (2013/07/14)
Season 1 (2012/10/04 – 2012/10/20) 同様、今回も本筋の業務前に別件が続いてやや長めの出張です。07/11 – 07/15 までは久しぶりに以前
2013/01/14 11:36 品川
通常沖縄出張の際は、沖縄の Drive Network のスタッフとは普段顔を合わせることが少ないため、顔を合わせた時ならではにミーティングや意識合わせを頻繁に行います。今回の出張は当初予定していませ
Lavender
緑内障 (No. 4) の続きです。9 ヶ月近く様子見前回 2013/03/08 に診察を受けてからしばらく放置していました。点眼せずとも視野の狭窄も進まず眼圧も正常値だったこともあります。一応他の医
ブルーシール 川平食堂
石垣島 (No. 9 ? 川平湾 Part 3) の続きです。スタート地点から 5 分程歩いていますが、まだまだ続いていそうです。海が近づきつつあります。行き止まりが見えて来ました。スローペースとは言
R&D ファクトリー (4)
富山出張 (No. 1 – 株式会社エーティーワークス) の続きです。富山本社・データセンターの内部にも興味がありましたが、実際の組立現場にはもっと興味がありました。建物の 2F の入口か
Dr. コトー診療所 (自転車)
与那国島 (No. 7 – Dr. コトー診療所 Part 1) の続きです。まずは事務室の中から。おぉ。。和田さんがカメラの手入れをしていそうです。そして病室。ドラマでは窓から外が映る際
タコライス + オニオンリング
沖縄本島 (No. 18 – mati-cafe 京の抹茶パフェ) の続きです。沖縄本島 (No. 14 – キングタコス 長田店) は数年ぶりに訪れましたが、タコス屋 新都心
ぶっかけ (冷)
実は 1 人で食べに行って、自分のお金でうどんを食べることは今までありませんでした。小さい頃のトラウマなのでしょうか、どうもうどんが好きになれず、断然そば派。つけ麺もうどんの面影があるので挑戦に二の足
My Select (2013/05/31)
沖縄出張 (No. 21 ? てぃーだ社員食堂 Part 1) の続きです。05/20 から 2 週間の沖縄出張で、ランチ時に社食をいただいたのは 4 回でした。Part 1 に引き続いて残り 3 回
Valid HTML5 Valid CSS3 Another HTML Lint