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

Cisco config backup Tool では、Catalyst の標準的な Telnet パスワードでログインする場合を前提に作成しています。

Catalyst ではスイッチ本体に登録するユーザ名・パスワードによる認証も可能で、コマンド "aaa new-model" により AAA (Authentication, Authorization, Accounting) が有効な場合にも適用するサンプルです。

$aaa には、AAA が有効なスイッチを追加します。他はユーザ名の追加と $aaa にマッチした場合の条件分岐が主な変更です。

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

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

use strict;

use Net::Telnet::Cisco;

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

    my $target = $ARGV[0];

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

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

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

    my $aaa = {
        'sw01' => 1,
    };

    #// ----------------------------------------------------------
    #// 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);

        if ($aaa->{$_}) {
            $sess->login(Name => $user, Password => $pass_vt);
        } else {
            $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

マグロづけ丼 (1)
いさば (サーモン西京焼) から 1 ヶ月弱開きましたが、興味があったマグロづけ丼を試すべく訪れました。今日の日替りランチはさわらの西京焼。うーん、うーん。と少し考えましたが、西京焼自体は前回サーモン
eco かまど (2)
以前、伊賀焼の土鍋 かまどさん で炊き上げた白米の美味しさに驚き、近いうちに自宅でもと思いつつ半年が経過してようやく購入しました。"かまどさん" より炊き上げ時間が短く済む eco
オリオンハッピーパーク (1)
以前から一度は行ってみたいと思いつつなかなか行けなかった場所に、先日の沖縄出張時の休日に同時に 2 個所行けました。まずは、売れ切れる場合も多いと評判の 山原そば (やんばるそば) の沖縄そばを初めて
玄米 + ゲンコツメンチ + キャベツ千切り
一時期 セブンイレブン (あらびき牛肉メンチカツ) を土日のどちらかのお昼ご飯として買っていた時期がありましたが、ローソンでも同じ様なメンチカツを見かけました。最寄りのローソンではなぜか夕方の方がスト
Drive Network Core (WS-C3750E-48TD-E)
現在の Drive Network のスタイルを 2004/01 から担当。Drive the Future のキャッチコピーの元、お客様のビジネスを支援する IT サービスの提供を続けています。舞台
クラッシュスィーツ (2)
沖縄本島 (No. 45 – 町の灯こつぶ) の続きです。到着日に同行した友達が、以前から気になっていた 沖縄本島 (No. 30 – ハンバーグとパンケーキのお店 うるり)
FreeBSD Logo
PHP 4.4.9 + OpenSSL 0.9.8 系の環境を OpenSSL 1.0.1j にアップデートした際に躓いた点を整理します。configure は通りますが make で以下の様にストッ
海老かき揚げとお刺身定食 (ご飯追加)
築地食堂 源ちゃん (デミグラスハンバーグと海老フライ定食) での驚きと満足感から、日を空けずに再び訪れました。神保町店は B1F ですが、降りる手前の看板です。元気があって良いですね。ところで &q
新開発 ! 超クリーミー泡サーバー (19)
新開発 ! 超クリーミー泡サーバー (Part 3) の続きです。Part 3 で 30 点分の飛び道具がありましたが、292 点まで溜まりました。そろそろ締切が近付いてきたので、まずはフルセットで応
白身 3 品盛 (真鯛・小庄鯛・天然ヒラメ)
築地食堂 源ちゃん (夜会 Part 1) に続いて、いよいよメインとなるおつまみの登場です。黒板メニューからチョイス。最近やけにカツオが食べたいと思っていた矢先に見つけたので、飛びつきました。オレン
Valid HTML5 Valid CSS3 Another HTML Lint