[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は配置してください
この記事が気に入ったらサポートをしてみませんか?