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. 5 – また来るさ) の続きです。本部港を出て、当初は名護市で有名な カレーと珈琲の店 たんぽぽ を訪れる予定でした。伊江島でのランチがかなり遅めだったこともあり、お腹が
とり唐揚定食 (ご飯大盛り)
現在足立区綾瀬に住んで 6 年が過ぎましたが、この地に引っ越してきて実に良かったことの 1 つは、味安 を見つけたことです。地元ではかなりの有名店の様です。すでに 30 年以上もこの地で続けているとか
ORANGINA 420ml
ここ 10 年程は、マクドナルド等ファーストフードでの昼食以外で意図して炭酸入りの清涼飲料水を飲むことはほぼありませんでした。一方、ここ 1 年程街角の自動販売機でその姿を見掛けて気になっていたところ
ザ・プレミアム・モルツ MASTER'S DREAM (1)
ザ・プレミアム・モルツ <香るプレミアム> (Part 2) がうれしいことに通年販売となりケース買いして間もなく、以前から告知されていた ザ・プレミアム・モルツ マスターズドリーム が発
W ステーキ
松屋の 牛焼肉各種定食 増量キャンペーン開催 ! が気になって入ってからスイッチが入り、先週はすっかり肉食ウィークでした。少し前から、丸香やエチオピアに行く手前の靖国通り沿いに見掛ける看板 BISTR
VAIO Fit 13A (背面)
Windows 8.1 の Quick Launch で並び順が勝手に変わる (Part 2) 現象はどうにか克服出来ましたが、今度は同じ Windows 8.1 Pro 付属の Windows Me
豚骨醤油 青ネギラーメン 味こいめ 脂あっさり (1)
哲麺 (豚骨醤油 青ネギラーメン) で 哲麺 デビューしてから、1 日空けて再び訪れました。青ネギスイッチは Off に出来ましたが、まだ慣れないクリーミーなとんこつラーメンは印象に残っていて、少し時
牛赤身ひき肉 (9)
自宅 de タコライス (S&B タコスシーズニング Part 1) の続きです。タコスミートS&B タコスシーズニング は 1 パックに 2 袋入りで、1 袋 (8g) をひき肉 1
釜上げ (中盛 + ちくわ天)
うどん 丸香 (きつねうどん・釜上げ) で初めて "かけうどん用のトッピング" 以外の天婦羅を試しました。おそらく "classic (定番の焼ちくわ)" です
ドライブインレストランハワイ (1)
沖縄本島 (No. 8 – 渡久地港) の続きです。水納島への便が欠航のため、本部半島をしばらくドライブしたり散策しました。その後、気になっていた ドライブインレストランハワイ でランチす
Valid HTML5 Valid CSS3 Another HTML Lint