teratermマクロでログを取得

今回、踏み台・ログを取得するネットワーク機器はCisco製を想定してます。
しかし、機器によっては応答が異なる場合が稀にありますので、うまく動作しない場合があります。
その場合は随時修正をお願いします。

■取得したログ
保存する場所    :c:\temp\“指定した各フォルダ”
ログファイル名の定義:“ホスト名”-runninng-config_”日付”.log

■踏み台にする機器
IPアドレス   :192.168.0.1
ホスト名    :fumidai-l3-rt01

■ログ取得の対象機器
一覧ファイル     :hostlist.txt
IPアドレス      :192.168.1.254,192.168.1.253,192.168.2.254,192.168.3.254
ホスト名       :tokyo-hoge01,tokyo-hoge02,osaka-hoge02,fukuoka-hoge03
取得するログのコマンド:show running-config

hostlist.txt
 ※hostlist.txtの最終行には、必ず空改行等を入れないで下さい。
  teratermがデータが続くと判断して自動終了せずに、エラーで終わってしまいます。

東京
tokyo-hoge01
192.168.1.254
東京
tokyo-hoge02
192.168.1.253
大阪
osaka-hoge02
192.168.2.254
福岡
fukuoka-hoge03
192.168.3.254

cisco_show-running.ttl

;ユーザ名の指定
USRNAME=’admin’

;パスワードの設定
PASSWD1=’password1′
PASSWD2=’password2′

;踏み台とするネットワーク機器へtelnet
connect ‘192.168.0.1:23 /nossh’
;踏み台をサーバとする場合は
;connect ‘192.168.0.1:22 /ssh /auth=passwd /user=ユーザ名 /passwd=パスワード

wait ‘Username:’
sendln ‘admin’
wait ‘Password:’
sendln PASSWD1

wait ‘fumidai-l3-rt01>’
sendln ‘enable’
wait ‘Password:’
sendln PASSWD1
wait ‘fumidai-l3-rt01#’

;ホストリストデータを読み込み
fileopen infp ‘hostlist.txt’ 0
if infp = -1 goto owari
:loop

;ログ保存場所を指定
logname=’c:\temp\’
filereadln infp inbuf
if result goto fclose

;ログファイル名を指定
strconcat logname inbuf
strconcat logname ‘\’
filereadln infp inbuf
if result goto fclose

;ホスト名をユーザモードと特権モードを使い分ける
hostnm=inbuf
hostnm2=inbuf
strconcat hostnm2 ‘#’

;ログファイル名に挿入する日付フォーマットを指定
getdate datestr
gettime timestr
strconcat logname hostnm
strconcat logname ‘-show running-config_’
strconcat logname datestr
strconcat logname ‘-‘
strcopy timestr 1 2 wkstr
strconcat logname wkstr
strcopy timestr 4 2 wkstr
strconcat logname wkstr
strcopy timestr 7 2 wkstr
strconcat logname wkstr
strconcat logname ‘.log’

strconcat hostnm ‘>’
filereadln infp inbuf
if result goto fclose
addres=inbuf

;機器へtelnetを開始
sendln ‘telnet ‘addres
wait ‘Username:’
sendln usrnm
wait ‘Password:’
sendln PASSWD2
wait hostnm

;特権モードに移行
sendln ‘enable’
wait ‘Password:’
sendln PASSWD2

;ログの取得を開始
wait hostnm2
sendln ‘terminal length 0’
wait hostnm2
logopen logname 0 0
sendln ”
wait hostnm2
sendln ‘show runninng-config’
wait hostnm2
logclose
sendln ‘terminal length 24’
wait hostnm2

sendln ‘exit’
wait ‘fumidai-l3-rt01#’

“loop”の場所に戻ります
goto loop

;終了処理
:fclose
fileclose infp
sendln ‘exit’

:owari
end

シェアする

  • このエントリーをはてなブックマークに追加

フォローする