🗂️
TeraTermのマクロでconfig収集
ネットワーク機器のリストを読み込んで、踏み台を経由して各機器にtelnetして、TFTPでconfigを収集するマクロを書いてみた。
マクロの内容
- 踏み台にtelnet
- csvファイル読み込み
- csvに記載されたipにtelnet
- running-configをtftpサーバーにコピー
- 3-4繰り返し
読み込むCSVのレイアウト
list.csv
hostname,ip,Username,Password
レイアウトの説明
|項目|説明|
|---|---|---
|hostname|機器の名称|
|ip|機器のIPアドレス|
|Username|telnet用ユーザー名|
|Password|telnet用パスワード|
完成したマクロ
;踏み台用SWにtelnetでlogin
hostname = '192.168.*.*'
strconcat hostname ':23 /nossh /T=1'
connect hostname
; set username
Username = 'hogehoge'
Password = 'hogepwd'
UsernamePrompt = 'login:'
PasswordPrompt = 'Password:'
; login
wait UsernamePrompt
sendln Username
wait PasswordPrompt
sendln Password
; OK, auto login complete.
; GetDate(yyyymmdd)
getdate DATE "%Y%m%d"
;csv read
csvfile = 'C:\Work\tool\list.csv'
separator = ','
; read only
fileopen fh csvfile 0 0
; roop
while 1
filereadln fh buf
if result then
break
endif
strsplit buf separator 4
host = groupmatchstr1
ip = groupmatchstr2
user = groupmatchstr3
passwd = groupmatchstr4
;telnet
telnetcmd = 'telnet '
strconcat telnetcmd ip
wait ">"
sendln telnetcmd
; login
wait UsernamePrompt
sendln user
wait PasswordPrompt
sendln passwd
; copy yyymmdd-host-ip.txt
sprintf2 copycmd 'copy running-config tftp://hoge-tftpsv/%s_%s_%s.txt' DATE host ip
wait ">"
sendln "en"
wait "#"
pause 2
;messagebox copycmd 'copycmd'
sendln copycmd
wait "#"
pause 5
sendln "exit"
pause 3
endwhile
fileclose fh
;踏み台用SW exit
wait ">"
sendln "exit"
end
TFTPサーバー
TFTPサーバーは、これのポータブル版を使用してます。
課題
- パスワードを平文テキストで読み込んでいるので、セキュリティ的にいまいち。
- telnetでやっているので、sshにしたい。
参考にしたサイト
Discussion