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

玄米 (3)
長谷園 eco かまど (三合炊き – 玄米二合 ふたたび) の続きです。1, 2 回目は、火加減・水加減の違いのためか、会心の出来とは言えませんでした。長谷園 eco かまど (三合炊き
My Select (2013/05/31)
沖縄出張 (No. 21 ? てぃーだ社員食堂 Part 1) の続きです。05/20 から 2 週間の沖縄出張で、ランチ時に社食をいただいたのは 4 回でした。Part 1 に引き続いて残り 3 回
Pioneer BDR-XS05J (1)
VAIO Fit 13A (リカバリーメディアの作成) の続きです。VAIO Fit 13A はディスプレイサイズが 13.3inch ながらバッテリー込みで 1.31kg ですから、当然の様に DV
2013/01/14 12:13 羽田空港
沖縄出張 (No. 13 ? 欠航 Part 1) の続きです。保安検査場最近 ANA の保安検査場は C, D も拡張されたと記憶しています。A, B より明らかに空いているので、例え搭乗口が 50
豆カレー (辛さ 20 倍)
カリーライス専門店 エチオピア 本店 (No. 9 – 特製エビ豆カレー) の続きです。特製エビ豆カレーで、以前食べた野菜豆カレーの不思議さを思い出し、かつ残り 2 メニューで全制覇という
旅館前から祖納港方面
与那国島 (No. 2 – 到着) の続きです。与那国には 2012 年現在ホテルはなく、すべて民宿的な旅館です。素泊まりが多い中で今回は食事にも力を入れている 旅の館 阿檀 にしました。
A&W ルートビア
先日 銀座わしたショップ 2014/11/13 (ルートビア) でルートビアを 2 缶買って来ました。沖縄本島 (No. 41 – A&W 那覇空港店 初ルートビア) で 09/2
ニューヨークステーキ L (1)
沖縄本島 (No. 46 – うるり クラッシュスィーツ) を朝食にした沖縄入り 2 日目のランチは、那覇に宿泊している上にニクの日だけに ジャッキー ステーキハウス と決めていました。1
沖縄ちゃんぽん
すばや (ゆし豆腐そば) の時は、沖縄ちゃんぽんのつもりで訪れましたが、偶然にもお店の都合により中止していました。今回はリベンジです。入口に三線が飾ってあることに気が付きました。夜の居酒屋タイムの時は
パーラー島風 (6)
銀座わしたショップ 2014/06/13 (コンビーフハッシュ) の続きです。銀座わしたショップ 2013/07/05 (パーラー島風 ソフトクリーム) 以来ほぼ 1 年ぶりに訪れましたが、雰囲気が少
Valid HTML5 Valid CSS3 Another HTML Lint