お久しぶりです。モンハンRISEがHR7で止まっている志村です。
ラージャンとディアブロスが怖すぎて先に進めません…
数か月前まではサーバ構築とハンターだけが己の仕事だと思っていたら、スイッチの構築まで仕事になっていました。
何十台もポチポチと設定を投入して確認!?大変すぎる!
手動でログインすらやりたくない!
なるべく楽をしてハンター業に精を出したい!
その時、神は言いました…
「Tera Termマクロを使いなさい」と…
ブログの最後に、RHEL系サーバへSSHログイン→コマンド実行するマクロを紹介します!
Tera Termマクロって何?
TeraTerm用のマクロ実行プログラムのことです。
Tera Termインストール時に一緒にインストールされています。
マクロ言語“Tera Term Language (TTL)”でTera Termを制御し、様々な機能を実現することが出来ます。
マクロを動かすためにはTTLファイル<XXXX.ttl>が必要になります。
拡張子は”.ttl”ですが、形式はテキストファイルと変わりません。
マクロの実行方法にはいくつか種類があります。
その中でも良く使用する方法が以下の3通りです。
②TTLファイルをダブルクリックして実行。(関連付けが必要)
③ショートカットを作成しマクロを実行。
今回のブログでは、出現頻度の高いコマンドを紹介していきます。
よく使うコマンド一覧
大体のことは以下のコマンドの組み合わせで出来ました。
より良い方法もあると思いますが、とりあえずやってみましょう!
コマンド投入
sendln <data1> <data2> …
・文字列と改行をホストに送信します。
・sendlnのみだと、改行だけ送信されます。
※類似コマンドのsendは改行が含まれません。
連結コマンドを使用しなくても、連結して送信することが可能です。
sendln ‘hostname’
;コマンド「hostname」を投入
sendln ‘host’ ‘name’
文字列待機
wait <string1> [<string2> …]
・<string1~10>の文字列をホストから送られてくるまで待機します。
・timeoutでタイムアウト値を設定できます。設定しない場合はタイムアウトしません。
・コマンドの実行結果は以下のようにresultへ格納されます。
値 | 意味 |
---|---|
0 | タイムアウト。どの文字列も来なかった。 |
1 | <string1> を受信。 |
2 | <string2> を受信。 |
n | <string n> を受信。 |
プロンプトが表示されるまで次の実行を止めたり、
コマンド結果によって条件分岐を作れるので汎用性が高いです。
wait ‘いちご’
;「いちご」または「みかん」がホストから返ってくるまで待機
wait ‘いちご’ ‘みかん’
指定時間待機
pause <time>
・TTLの実行を <time> 秒だけ休止させます。
・ミリ秒待機の場合はmpauseを使用します。
マクロの実行が早すぎて、ホストが追いつかない事があります。
節目毎にpauseを使用しておくと、実行が早すぎてログが取得出来ない問題を回避する事が出来ます。
pause 5
;500ミリ秒待機
mpause 500
文字結合
strconcat <strvar> <string>
・文字列変数 <strvar> の文字列値の最後に 文字列 <string> を継ぎ足します
コマンド文字列やログファイル名の加工で良く使います。
複数の文字列を結合する場合には作業を繰り返す必要があります。
LIKE = ‘いちご’
strconcat LIKE ‘ミルク’
→<LIKE>の中身が‘いちごミルク’になる
文字列分割
strsplit <strval> <separator> [<count>]
・<strval>の文字列を<separator>の区切り文字(1文字)で分割し、groupmatchstr1~9に格納します。
・<count> が省略され、文字列中の部分文字列の数が 9 を超えるときは、システム変数 resultに格納されます。
src=’佐藤,鈴木,高橋,田中,伊藤,渡辺,山本,中村,小林,加藤’
strsplit src ‘,’
groupmatchstr1→ 佐藤
groupmatchstr2→ 鈴木
groupmatchstr3→ 高橋
groupmatchstr4→ 田中
groupmatchstr5→ 伊藤
groupmatchstr6→ 渡辺
groupmatchstr7→ 山本
groupmatchstr8→ 中村
groupmatchstr9→ 小林
result→ 加藤
ログイン関連
connect <command line parameters>
・マクロがTera Termとリンクされていない場合、Tera Termを起動してTera Termマクロとリンクさせます。
connect ‘<IPアドレス>:23 /nossh’
;パスワード認証によるSSH接続(port 22)
connect ‘<IPアドレス>:22 /ssh /auth=password /user=<ユーザ名> /passwd=<パスワード>’
;COM port 接続
connect ‘/C=<COMポート番号>’
ログ保存関連
logautoclosemode <flag>
・<flag> の値が1の場合、マクロ終了時、自動的にログ採取を停止する。
・<flag> の値が0の場合、マクロ終了時、自動的にログ採取を停止しない。
※設定情報はデフォルトに戻ります
logopen <filename> <binary flag> <append flag>
・<binary flag> の値が0のとき、受信した漢字、改行文字は変換されてファイルに書き込まれ、エスケープシーケンスは書き込まれません。
・<binary flag> の値が0以外のとき、受信した文字をすべてそのままファイルに書き込みます。
・<append flag> の値が0で、ファイル <filename> がすでに存在する場合、そのファイルは上書きされます。
・<append flag> の値が0以外で、ファイル <filename> がすでに存在する場合、そのファイルに追加して書き込みます。
logclose
・Tera Term のログ取得を終了します。
ログの保存のコマンドは以下の流れで使用します。
LOGFILE = ‘C:\log\’
strconcat LOGFILE ‘Test.txt’
;ログ記録開始
logautoclosemode 1
logopen LOGFILE 1 1
~~~実行するマクロを記載~~~
;ログ取得終了
logclose
サンプルマクロ
RHEL系サーバへSSHログイン→ログ取得作成→コマンド実行するマクロを紹介します。
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
;----------------------------------- ;引数 ;----------------------------------- ;ログ保存先ディレクトリ LOGDIR = 'C:\ttl\log\' ;接続先情報 HOSTNAME = testhost HOSTADDR = 1.1.1.1 USERNAME = root PASSWORD = Password ;----------------------------------- ;SSHログイン ;----------------------------------- msg = HOSTADDR strconcat msg ':22 /ssh /auth=password /user=' strconcat msg USERNAME strconcat msg ' /passwd=' strconcat msg PASSWORD connect msg ;msg = 1.1.1.1:22 /ssh /auth=password /user=root /passwd=Password wait '#' ;プロンプトが表示されるまで待機 ;----------------------------------- ;ログ取得開始 ;----------------------------------- ;ログファイル作成 LOGFILE = LOGDIR strconcat LOGFILE 'Test' ;ファイル名を設定 strconcat LOGFILE '.txt' ;ファイル拡張子を設定 ;ログ記録開始 ;ログの記録は必ずログイン後に実行する logautoclosemode 1 logopen LOGFILE 1 1 ;----------------------------------- ;コマンド実行 ;----------------------------------- sendln 'hostname' ;コマンド'hostname'を送信 wait '#' ;コマンド送信毎に、waitでプロンプトの表示を待つ sendln 'redhat-release' wait '#' ;----------------------------------- ;マクロ終了 ;----------------------------------- ;ログ記録終了 logclose ;tera termを閉じる closett ;マクロを終了 end |
コマンド毎にログを取得したい場合は、
ログを作成→コマンド実行→ログの記録終了を繰り返してください。
おわりに
以上のコマンドを組み立てることで、簡単なTera Termマクロを作成することが出来ます。
他にも「do ~ loop」を使用したループや、
「fileopen」を使用してファイルを読み込むことも可能です。
「if」を使用した条件分岐も可能ですので、Tera Termマクロの可能性は無限大です!
1台づつログインしてコマンドを打ち込むよりも作業スピードは格段に上がると思います。
コマンド毎に証跡としてテキストファイルを残す場合は、特にTera Termマクロの恩恵を感じます。
サーバもスイッチもTera Termマクロを作ってもっと楽に作業しましょう!
次のブログまでにHR8以上になっていますように…