LogMeTTを使ってみた

TeraTermにバンドルされているマクロエディタをいじりはじめた。


開発環境で使っているサーバにウイルスパターンファイルのアップデートを毎月流さないといけないのだけど
インターネットに接続されていない内部で完結したネットワークのため
指定されたパターンファイル取得PCからパターンファイルを圧縮して持ち出さないといけないのです。


(;'-')うん、正味めんどくさいんだ。


会社のPCは私用で使えるFTP鯖にしてあるので、そこからパターンファイルをDLしてアップデートコマンドを流せばいいのだけど、サーバ側に設定すると色々と面倒なことになる。
(特にトラブル時に見つかると言い訳説明が)


TeraTerm自体に操作ログをリプレイして操作を再現する機能もあるけれど、ファイルの転送部分に時間のブレが大きいため、イマイチあてにならない。


で、TeraTermにバンドルされているLogMeTTにいきついた。
PC側に設定できて、サーバ側に設定いらない上、ログもちゃんと取ってくれるので
タスクスケジューラと連携させて動かせばほとんど手間いらずになりそうである。


基本はconnect文でサーバに接続し、sendln文でコマンドを流し込む。変数も使えるのでパスワードなどはパラメータにしてもいいし、外部ファイルからファイルオープンで読み出すこともできる。
で、FTPで各サーバが自分のPCからパターンファイル取ってくる部分の例。(既にSSHで接続済み)

timeout = 30
sendln 'ftp MyPC'
wait ':'
sendln 'FTPPassword'
wait 'FTP>'
sendln 'binary'
sendln 'cd AntiVirus/PatternFiles'
timeout = 600
wait 'FTP>'

sendln 'get PatternFile_Windows.zip'
wait 'FTP>'
sendln 'get PatternFile_Unix.tar'
wait 'FTP>'
sendln 'get PatternFile_Linux.tar'
wait 'FTP>'

timeput = 30
sendln 'quit'

ちょこちょこ入れてあるwait文が設定したtimeoutの秒数経つか、引数の文字列がコンソールに返ってくるまで待機する。この機能が中々ありがたい。


ちなみにwaitでサーバの応答を待たせないとバッファの限りコマンドを流し込むらしいので
絶え間なくコマンドが流れていきます。lsの表示の戻りが遅くて仕方が無いと思うくらい。
あとは各サーバごとにマクロを書いて、Run Branchで走らせると設定したツリーに従って連動して走るようになります。


TeraTermのSCPも呼び出せたので試してみたけど、どうもSCPを平行に走らせようとすると切断されるっぽい。
(当初パターンファイルを一つのサーバに全部送り込もうとしたら3つのうち二つ目のSCPが動き出した事前でセッションが切れた)


とまあこんな感じで仕事はダラダラとやっております。