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

bistro rose ♪
今日は "ハッシュ・ド・ビーフ" の作り方をご紹介。寸胴にデミグラスソース・ケチャップ・水を開けておく。量は 1:1:1.5 程度。水は多めにして、煮込んだ後 1:1:1 になれば
りんご型モバイルバッテリー POWER STYLE 6400 (6)
現在使用している ARROWS X F-10D の電池の持ちが再び悪くなって来ました。純正品の電池パックは 1800mhA で 4,000 円強することと、何かのきっかけで "モバイルバッテ
Havana カレー (ビーフ, ライス大盛り, ルー大盛り x 2, 辛さ 20 倍)
沖縄出張 (No. 8 ? Havana CURRY) の続きです。前回 2012/10 に久しぶりに訪れた後、東京に戻ってからは 欧風カレー ボンディ (チキンカレー) や カリーライス専門店 エチ
iPhone 6 Plus (Gold)
iPhone 6 Plus に切り替えて半年程経ちましたが、会社名義の iPhone から個人での契約に切り替えることにしました。もう一度 iPhone 6 Plus にすると決めていましたが、同じく
立山連峰 (4)
富山出張 (No. 4 ? スターバックス コーヒー 富山環水公園店) の続きです。出張 2 日目は移動日として東京に帰りました。初日に富山空港の外に出た瞬間に気が付きましたが、正面一帯に立山連峰が見
豚骨醤油 青ネギラーメン (1)
先日、愛知の友達の投稿でネギ入れ放題のラーメンを見てスイッチが入ってしまい、オフィス周辺で調べてはみたものの、調べた限りはカレーとラーメンの聖地 "神保町" でも見当たりません。小
コピリーナ (5)
前回の出張 2013/01 から今回の間に、かつてのスタッフが夢をかなえて cafe copiriina*コピリーナ をオープンしていたので、今回は是非にと訪れました。沖縄入りして 1 週間でようやく
つけ麺 中盛 (330g)
先日自宅からデータセンターに向かう途中、JR 御茶ノ水駅から丸ノ内線御茶ノ水駅に乗り継いだところ、丸ノ内線が停電事故により振替輸送を実施とアナウンスが聞こえて来ました。振替輸送された方が遠回りになるど
Herb
セールスメモ (No. 1) の続きです。以前社内で開催されたセールス・プロモーションに関する勉強会の内容を整理してみました。事例 -> 拡販リスティング広告以前に SEO 対策が必要。インター
iPhone 6 Plus (Gold)
iPhone 6 Plus (充電 "バッテリーセーバー") の続きです。初回の充電は PC に接続ではなく、USB 電源アダプタを用いて直接充電して 55% -> 80%
Valid HTML5 Valid CSS3 Another HTML Lint