🗂️

TeraTermのマクロでconfig収集

2021/03/16に公開

ネットワーク機器のリストを読み込んで、踏み台を経由して各機器にtelnetして、TFTPでconfigを収集するマクロを書いてみた。

マクロの内容

  1. 踏み台にtelnet
  2. csvファイル読み込み
  3. csvに記載されたipにtelnet
  4. running-configをtftpサーバーにコピー
  5. 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サーバーは、これのポータブル版を使用してます。
http://tftpd32.jounin.net/tftpd32_download.html

課題

  • パスワードを平文テキストで読み込んでいるので、セキュリティ的にいまいち。
  • telnetでやっているので、sshにしたい。

参考にしたサイト

https://qiita.com/iguru/items/eed60bc1d969a6a0000c
https://teraterm.jp/?p=417

Discussion