見出し画像

[teraterm macro]csvに記載した対象にsshし'hostname'.logで保存

個人用メモ
タイトル通りcsvに記載した対象にsshでログインしてログ取得し、hostnameでC:\logに保存していくマクロです。
(個人用にとりあえずログを手軽に取れれば良いとかそういった時の用途を想定しているので結構雑です)

example.ttl

csvfile = 'example.csv'
separator = ','
; 読み取り専用でCSVファイルを開く
fileopen fh csvfile 0 0
while 1
	filereadln fh buf
	if result then
		break
	endif
	strsplit buf separator
	ip = groupmatchstr1
	user = groupmatchstr2
	passwd = groupmatchstr3
	hostname = groupmatchstr4
;接続用コマンド
COMMAND = 'ssh '
strconcat COMMAND user
strconcat COMMAND '@'
strconcat COMMAND ip
;作業対象サーバへ接続
sendln COMMAND
;パスワード入力
wait 'Password:'
sendln passwd
wait '#'
sendln 'ter len 0'
changedir 'C:\log\'
sprintf2 logname "%s.log" hostname
logopen logname 0 0
wait '#'
sendln 'sh run'
wait '#'
;コマンドを適宜追加
sendln ''
wait '#'
sendln 'exit'
logclose
; 2秒待つ
pause 2
endwhile
fileclose fh
end


example.csv

ip1,user1,password1,hostname1
ip2,user2,password2,hostname2
ip3,user3,password3,hostname3


ファイル名に日時も追加したいとかは検索したらたくさん出てきます。
特に気にしなくて良い時もありますがlogopen 0 0のフラグ部分は結構大事ですね。
後半がappend flagで0かそれ以外で下記の動作をします。
<append flag> の値が0以外で、<filename> がすでに存在する場合→追記
<append flag> の値が0で、<filename> がすでに存在する場合→上書き

※自動でログ保存する設定をしている場合はそちらが優先されるので消去が必要
※今回の場合は同じディレクトリにcsvとttlは配置してください

この記事が気に入ったらサポートをしてみませんか?