•   Login
  •  
  •   Rss
  •   Rss2.0
  •   ATOM1.0
  •   Admin
  •   Top
  •   Home

Teratermマクロの改良
ちなみに、Teratermマクロコマンド集は、こちらにあります。
我が家には2台のメインサーバーがあります。
1台はクラウド型で遠隔地にあります。
どちらもLinux Debianタイプです。
不定期にWindowsのようにパッチ更新をするのですが、ログを残していませんでした。
そのため、先日の記事(Webalizer改良)を紹介するときも、ちょっと手間がありました。


今回はログを保存するためのコマンドとパスワード直書きの修正です。
また、コマンドを使うタイミングについて注意を書きます。
ちなみに、Teratermマクロコマンド集は、こちらにあります。
前回の記事、マクロを掲載していますのでそちらと見比べると良いかも。
TeraTermマクロによるLinuxサーバー自動アップデート



【1】追加した部分と解説
username2 = 'root'
passwdfile2 = 'c:\hogehoge2.dat'

gettime timestr "%Y%m%d-%H%M%S"
sprintf2 filename '%s_hogehoge_autoupdate.log' timestr
最初のusername2とpasswdfile2は、rootユーザとそのパスワードファイルです。
gettimeとは、今の時間を取得するコマンドです。これを、timestrと言う変数に入れます。
"%Y%m%d-%H%M%S"とは、西暦年月日時間です。
WindowsのVBAと混同しやすいのは、Teratermの場合“%Y”だけで2017と4桁取得します。
“%m”なら2月なので02と2桁取得します。
VBAだと“%mm”と入れないと、【02】と入らず、【2】だけになってしまいます。
その要領でTeratermマクロに入れると、例えば2017年2月10日8時43分5秒の場合、2017YYY02m10d-08H43M05Sとなります。

sprintf2とは、引数をセットするコマンドです。
filenameという変数に、timestrで取得した時間に_hogehoge_autoupdate.logを加える。
と言う事です。これで、filenameには、20170210084305_hogehoge_autoupdate.log が入ります。
これでファイルネームは完成です。

msg = 'Enter password for root user '
strconcat msg username2
passwdkey = username2
strconcat passwdkey '@'
strconcat passwdkey hostname
getpassword passwdfile2 passwdkey password2
これは、rootユーザー用のパスワード作成です。
ファイルが存在しないときに出てきます。root用のパスワードをボックスに入れてください。


【2】ここまでは変数の初期設定。
次はログを記録するためのコマンドです。
; カレントディレクトリを変更する
changedir 'E:\log\teraterm'

logopen filename 0 0
logwrite 'Log start'#13#10
logwrite '*****************************************************'#13#10
まずは、カレントディレクトリを変更します。
標準はTeratermがインストールされたフォルダに入ります。
これはあまり望ましくないので、別のフォルダを作成してそこに入れましょう。
上記の例では、Eドライブのlogフォルダのteratermのフォルダに入れます。

logopenとは、ログファイルを開くイメージがあるが書き込むためのコマンドである。
filenameは、変数である。
その次にある「0 0」とは何か。
最初の0は、<binary flag>とき、受信した漢字、改行文字は変換されてファイルに書き込まれ、エスケープシーケンスは書き込まれない。
次の0は、<append flag> とき、ファイル <filename> がすでに存在する場合、そのファイルに追加して書き込む。
まぁ、同じファイル名になることは絶対にないので、appendflagは無視しても良いだろう。

logwrite とは、ログに書き込む文字列のことである。
これはシンプルなコマンドである。
ちなみに#13#10とはエスケープシーケンスと考えられる。
#13がCR、#10がLFじゃないかと思います。
これがないと改行されずに、この後に続き文字が書かれる。


【3】今回赤太字が修正したところ。
wait msg
sendln 'su -'
wait 'パスワード'
sendln password2

この赤太字のところにパスワードを直書きしていた。
もしもこのマクロが外部流出したら一巻の終わりである。
それを防止するために暗号化で外部ファイルに置いた。


【4】最後の設定。シンプルとしか書きようが無い。
解説をするまでもないが解説しておこう。
logclose
closett
end

logcloseとは、ログ取得を終了すること。自動的にファイルは綴じられ、以降のログは取得されない。
closettとは、Teraterm自身を終了すること。自動的に画面が閉じられる。
endとは、マクロの終了。まぁ、儀式的な感じですね。


なお、【3】を挿入する場面は、必ず、connectコマンドのあとに入れること。
この前に入れると、changedirコマンドで絶対にエラーになる。
結構この辺りで苦戦したのですが、あちこち入れ替えることによって判明しました。



記事を評価してください(★1つ=悪い、★5つ=良い)
この記事の平均評価: (1人)
Posted by いぐぅ 05:00 | ソフトウェア::プログラミング | comments (0) | trackback (0)
コメント
コメントする









この記事のトラックバックURL
http://www.sir-2.net/dablg/tb.php/5787
トラックバック

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30