teratermでネットワーク機器のconfigを取得する

 

 自宅にNW機器が増えるとconfigの管理が大変ですよね。そこで、少し原始的な手段ですがteratermだけでconfigを一括で取得出来るバッチを作成して使用しています。本日はそのバッチを公開致します(半分、自分のメモ的な意味でもあります)。

以下のバッチに補足致しますと、kaedeはconfigを保存するサーバ(CentOS6.7)です。sirius,vega,betel,aironetはCisco機器です。denebはH3C(現HP)の機器です。

システム開発において個人情報を扱う場合(特に銀行系)は、開発端末で使用出来るソフトが限られる事が多いです。主観ですがteratermはインストール許可が降りる傾向にありますので、以下のようなバッチが役に立つかと思います。

やっつけで作ったバッチですので細かい部分で「こうした方がいい」みたいな意見があるかと思います。指摘事項があるようでしたら、指摘して頂ければ幸いです。お願い致します。

 

 

;=============================================
;変数定義
;=============================================

;各機器のIPアドレス
sirius = "10.0.0.1"
vega = "10.0.0.253"
betel = "172.16.0.1"
deneb = "10.0.0.254" ;HPのスイッチなので要注意
kaede = "10.0.0.50"
aironet = "172.16.0.253"

;各機器の名前
name_sirius = "sirius"
name_deneb = "deneb"
name_vega = "vega"
name_betel = "betel"
name_kaede = "kaede"
name_aironet = "aironet"

;ユーザ名、パスワード
username = "arkey22"
password = "hogehoge"

;今日の日付
getdate date "-config_%Y%m%d.cfg"
gettime logfile "Y:\logs\teraterm_macro_log\GetConfig_NW_%Y%m%d-%H%M%S.log"

;=============================================
;sirius ログ取得
;=============================================
strconcat sirius ':23 /nossh /T=1'
connect sirius
;ログ取得開始
logopen logfile 0 0
wait 'Username: '
sendln username
wait 'Password: '
sendln password
wait '>'
sendln 'enable'
wait 'Password: '
sendln password
wait '#'
sendln 'copy startup-config tftp:'
wait '?'
sendln kaede
wait '-confg]?'
strconcat name_sirius date
sendln name_sirius
wait '#'
sendln 'exit'

do
mpause 10 ;10ミリ秒待つ
testlink ; 接続状態を確認する
;まだホストと接続されている(resultが2)ならばループを繰り返す
loop while result = 2


;=============================================
;vega ログ取得
;=============================================
strconcat vega ':23 /nossh /T=1'
connect vega
wait 'Password: '
sendln password
wait '>'
sendln 'enable'
wait 'Password: '
sendln password
wait '#'
sendln 'copy startup-config tftp:'
wait '?'
sendln kaede
wait '-confg]?'
strconcat name_vega date
sendln name_vega
wait '#'
sendln 'exit'

do
mpause 10 ;10ミリ秒待つ
testlink ; 接続状態を確認する
;まだホストと接続されている(resultが2)ならばループを繰り返す
loop while result = 2


;=============================================
;betel ログ取得
;=============================================
strconcat betel ':23 /nossh /T=1'
connect betel
wait 'Username: '
sendln username
wait 'Password: '
sendln password
wait '>'
sendln 'enable'
wait 'Password: '
sendln password
wait '#'
sendln 'copy startup-config tftp:'
wait '?'
sendln kaede
wait '-confg]?'
strconcat name_betel date
sendln name_betel
wait '#'
sendln 'exit'

do
mpause 10 ;10ミリ秒待つ
testlink ; 接続状態を確認する
;まだホストと接続されている(resultが2)ならばループを繰り返す
loop while result = 2

;=============================================
;aironet ログ取得
;=============================================
strconcat aironet ':23 /nossh /T=1'
connect aironet
wait 'Username: '
sendln 'Cisco'
wait 'Password: '
sendln 'Cisco'
wait '>'
sendln 'enable'
wait 'Password: '
sendln password
wait '#'
sendln 'copy startup-config tftp:'
wait '?'
sendln kaede
wait '-confg]?'
strconcat name_aironet date
sendln name_aironet
wait '#'
sendln 'exit'

do
mpause 10 ;10ミリ秒待つ
testlink ; 接続状態を確認する
;まだホストと接続されている(resultが2)ならばループを繰り返す
loop while result = 2

 

;=============================================
;deneb ログ取得
;=============================================
strconcat deneb ':23 /nossh /T=1'
connect deneb
wait 'Username:'
sendln username
wait 'Password:'
sendln password
wait '>'
mpause 100
tftp="tftp "
strconcat tftp kaede
strconcat tftp ' put '
strconcat tftp 'config.cfg '
strconcat tftp name_deneb
strconcat tftp date
sendln tftp
sendln 'quit'


mpause 1000
logclose
closett
end