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

東崎展望台 (2)
与那国島 (No. 11 – 海底遺跡) の続きです。朝食は滞在している 旅の館 阿檀 でいただいています。その際 "昨日はどこを周りましたか ?" という話になり、西
アジフライ定食 (ライス 大)
柏や (豚肉生姜焼定食) の続きです。今日はアジフライ定食と決めていました。到着した時間がお昼真っ只中 12:30 頃だったので、さすがに座れないかなと思いきや、昨日の様にほぼ満席でありながらも座れま
ガーリック唐揚 + ライスセット
味安 (さば焼定食) から少し日を空けて、前回気になったガーリック唐揚を試すべく 味安 を訪れました。今回の店頭看板のメニューも前回と多少変化していました。"はまち刺身と豚角煮大根セット&q
牛肩ロース 1kg (2)
ハッシュ・ド・ビーフの作り方 (No. 1) の続きです。牛肩ロース次は牛肩ロースを親指や人差し指大に細長く切って、塩・ブラックペパー・赤ワインで味付けしつつ強火で焼く。ミディアム程度かな。焼き終われ
FreeBSD Logo
PHP 4.4.9 + OpenSSL 0.9.8 系の環境を OpenSSL 1.0.1j にアップデートした際に躓いた点を整理します。configure は通りますが make で以下の様にストッ
ラジオ体操中
普段は私が沖縄に出張しますが、今回は沖縄から Drive Network のスタッフが勢ぞろいで東京へ出張に来ました。今まで Rack Map や写真でしか見たことのないデータセンター内の見学が一番の
プレミアム急冷器 (2)
新開発 ! 超クリーミー泡サーバー (Part 4) で応募して 2 週間程で、まずプレミアム急冷器のみ先行して配送を完了したとの通知が入りました。白い化粧箱 ? と同サイズの小さい荷物でやって来まし
ナポリタン (メン 大)
柏や (アジフライ定食) の続きです。連休が明けて今日もデータセンターで作業。データセンターでの作業も好きな部類ですが、最近は柏や目当てでもあるかの様に連続して通っています。やっぱり気になっていたナポ
げんこつハンバーグ (オニオンソース)
先週の木・金曜日は、浜松で 3 ヶ月毎に開催されるリーダーミーティングと呼ばれる部課長会議があり、出席しました。静岡と言えば げんこつハンバーグの炭焼きレストランさわやか が相当有名だと聞いていました
JTA961
かねてから最も行きたい沖縄の離島が与那国島でした。"Dr. コトー診療所" とそのロケ地巡りや海底遺跡がその最たる理由で、共感出来る人が出て来ても必ずしも同行出来るとも限らないしと
Valid HTML5 Valid CSS3 Another HTML Lint