グローディアのサービス一覧はこちら
 

【備忘録】Tera Termマクロでよく使うコマンド一覧

お久しぶりです。モンハンRISEがHR7で止まっている志村です。
ラージャンとディアブロスが怖すぎて先に進めません…

数か月前まではサーバ構築とハンターだけが己の仕事だと思っていたら、スイッチの構築まで仕事になっていました。
何十台もポチポチと設定を投入して確認!?大変すぎる!
手動でログインすらやりたくない!
なるべく楽をしてハンター業に精を出したい!

その時、神は言いました…
Tera Termマクロを使いなさい」と…

ブログの最後に、RHEL系サーバへSSHログイン→コマンド実行するマクロを紹介します!

Tera Termマクロって何?

TeraTerm用のマクロ実行プログラムのことです。
Tera Termインストール時に一緒にインストールされています。
マクロ言語“Tera Term Language (TTL)”でTera Termを制御し、様々な機能を実現することが出来ます。

マクロを動かすためにはTTLファイル<XXXX.ttl>が必要になります。
拡張子は”.ttl”ですが、形式はテキストファイルと変わりません。

マクロの実行方法にはいくつか種類があります。
その中でも良く使用する方法が以下の3通りです。

①Tera Termのコントロールメニューからマクロを選択しTTLファイルを実行。
②TTLファイルをダブルクリックして実行。(関連付けが必要)
③ショートカットを作成しマクロを実行。

今回のブログでは、出現頻度の高いコマンドを紹介していきます。

よく使うコマンド一覧

大体のことは以下のコマンドの組み合わせで出来ました。
より良い方法もあると思いますが、とりあえずやってみましょう!

コマンド投入

sendln <data1> <data2> …
・文字列と改行をホストに送信します。
・sendlnのみだと、改行だけ送信されます。
※類似コマンドのsendは改行が含まれません。

連結コマンドを使用しなくても、連結して送信することが可能です。

;コマンド「hostname」を投入
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を使用しておくと、実行が早すぎてログが取得出来ない問題を回避する事が出来ます。

;5秒待機
pause 5

;500ミリ秒待機
mpause 500

文字結合

strconcat <strvar> <string>
・文字列変数 <strvar> の文字列値の最後に 文字列 <string> を継ぎ足します
コマンド文字列やログファイル名の加工で良く使います。
複数の文字列を結合する場合には作業を繰り返す必要があります。

;文字列変数<LIKE>に文字列’ミルク’を結合する
LIKE = ‘いちご’
strconcat LIKE ‘ミルク’
→<LIKE>の中身が‘いちごミルク’になる

文字列分割

strsplit <strval> <separator> [<count>]
・<strval>の文字列を<separator>の区切り文字(1文字)で分割し、groupmatchstr1~9に格納します。
・<count> が省略され、文字列中の部分文字列の数が 9 を超えるときは、システム変数 resultに格納されます。

;文字列変数src内の文字を、区切り文字’ . ‘で分割する
src=’佐藤,鈴木,高橋,田中,伊藤,渡辺,山本,中村,小林,加藤’
strsplit src ‘,’

groupmatchstr1→ 佐藤
groupmatchstr2→ 鈴木
groupmatchstr3→ 高橋
groupmatchstr4→ 田中
groupmatchstr5→ 伊藤
groupmatchstr6→ 渡辺
groupmatchstr7→ 山本
groupmatchstr8→ 中村
groupmatchstr9→ 小林
result→ 加藤

ログイン関連

connect <command line parameters>
・マクロがTera Termとリンクされていない場合、Tera Termを起動してTera Termマクロとリンクさせます。

;telnet接続 (port 23)
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ログイン→ログ取得作成→コマンド実行するマクロを紹介します。

コマンド毎にログを取得したい場合は、
ログを作成→コマンド実行→ログの記録終了を繰り返してください。

おわりに

以上のコマンドを組み立てることで、簡単なTera Termマクロを作成することが出来ます。
他にも「do ~ loop」を使用したループや、
「fileopen」を使用してファイルを読み込むことも可能です。
「if」を使用した条件分岐も可能ですので、Tera Termマクロの可能性は無限大です!

1台づつログインしてコマンドを打ち込むよりも作業スピードは格段に上がると思います。
コマンド毎に証跡としてテキストファイルを残す場合は、特にTera Termマクロの恩恵を感じます。

サーバもスイッチもTera Termマクロを作ってもっと楽に作業しましょう!

次のブログまでにHR8以上になっていますように…

※記事の内容は保証はしておりません(執筆時期や実施環境により挙動が変わるものがある為)。
別途検証してご利用いただくことをおすすめいたします。

グローディアのサービス一覧はこちら