2023年3月19日日曜日

TeraTermマクロで無駄に嵌ったので覚書

どうも皆さまごーおんだいん♪社畜の連勤術師こと私です。

今回のネタはTeraTermマクロ。
しょーもない位くだらなく時間を浪費したので、今後の自分の為の覚書も兼ねて残しておきます。

もはや説明の必要性皆無だと思うんですが、TeraTermについてちょっとだけ。
TeraTermはWindows上からSSH接続するときに使うクライアントソフトウェアになります。
私の使い方は主にLinux系OSにSSH接続して、各種コマンドを実行するときに使ってます。
要はコマンド一つで、シャットダウンも再起動も自由自在というわけですな。

んで、TeraTermから送り込むコマンドをマクロ化して実行する事も、出来るんです。
例えば、「任意のタイミングでLinuxをシャットダウンしたい!」場合
;対象のLinux機へ接続します
connect 192.168.150.100:22 /ssh /2 /auth=password /user=hoge /password=hogehoge

;シャットダウンコマンドを送ります
sudo shutdown -h now


これをttlファイルとして保存しておき、TeraTermマクロのexe「ttpmacro.exe」に紐づけておけば、
一発でシャットダウンする事が出来るんです!便利ですね~!
※LinuxのIPが固定されてる事が前提ですよ!

これを使えばSSHやらコマンドやら分からない人でも、ルーチン化された業務を一発で実行出来るわけです。
ところが、今回ちょっと困ったことになったんですね。
先程「知らない人でも使える!」って書いたじゃないですか。 するとですね、出てくるんですよ。
マクロ実行中の画面を「何や分からん画面出るで。閉じたろ」ってやっちゃう、勇気が明後日の方向にいっちゃってる人が。

さっき書いたような単にLinuxをシャットダウンさせるマクロとかなら秒で消えるから良いんですが、これが
・Linux環境で実行中のサービスを止める
・作成されたファイルのダンプを作る
・止めてたサービスを再起動させる
とかになると、まぁまぁ待つんですね。
で、その間にマクロ画面の「×」とか押して閉じられちゃう!
画面に「処理中だよ!閉じないでね!」とか書いてもですね、まぁ読んでもらえない訳だ。
困ったもんですよ。

じゃあ「もう処理中の画面なんて見せてあげない!!」となった訳です。
画面無かったら閉じようがないでしょ?
以下サンプル。
;対象のLinux機へ接続します
connect 192.168.150.100:22 /ssh /2 /auth=password /user=hoge /password=hogehoge

;TeraTermのVTウィンドウを非表示設定にします
showtt -1

;TeraTermMacroのダイアログを非表示設定にします
show -1

;シャットダウンコマンドを送ります
sudo shutdown -h now


こうしておけばTeraTermマクロのダイアログボックスはおろか、VTウィンドウさえ表示されないので、
「おさわり禁止しても無視してさわられちゃうから、もう見せてやらないぜ!
おさわり出来ないだろ!HAHAHA!」
となるわけです。やったね!!

ふたつ注意しなきゃいけないのは、
・showttコマンドとshowコマンドはconnectの後に書かないといけない(当たり前だけどエラーになる)
・readとか使っちゃいけない
事かなぁ。
特にttl内から別のシェルスクリプトを実行させるような作りになっていて、実行先のシェルスクリプトに
readとかが書かれてると、VTウィンドウも何も表示されてないから当然キーボードイベントなんて
ハンドル出来るわけがなく、かといってエラーにもならないので、延々と処理を待つ、
フリーズみたいな事態に陥ります。
※これテスト中に気が付かなくて「なんで実行されないんだぁ??」って無駄に嵌りました。
これで少しでもトラブルが減ってくれたら、嬉しいんですがねぇ。
ではまた!!