Teratermマクロのテンプレート
TeraTermはソフトウエア開発の現場でよく使われるツールですね。
TeraTermマクロは敷居が高そうですが、構造はとても簡単です。
覚えておくのは「wait」と「sendln」のみです。
wait … 指定した文字列が表示されたら次の行のマクロを実行します
sendln … TeraTermにコマンドを送信します
つまり、
wait '$' sendln 'date' wait '$' sendln 'cd /home/user/' wait '$' sendln './sample.sh'
のように実行したいコマンドの「wait」と「sendln」を次々に書けば良いのです。
ここで「wait」に指定している「$」が何か気になりませんか?
TeraTermにログインすると…

ここでは、[centos@localhost ~]$ という文字列が表示されています。
wait '[centos@localhost ~]$' sendln 'date'
と書くべきなのですが、汎用的に処理するためにここでは、「wait ‘$’」としています。

TeraTermマクロの基本をマスターしたところで、次に以下のことを順次実行してみます。
1. サーバにログイン
2. 実行ログの出力
3. 任意のコマンドの実行
コマンドを書く前に定数を宣言します。
今回は、変数および定数を大文字で書くことにします。
HOSTNAME = '<任意のホスト名 or IPアドレス>' USERNAME = '<ユーザー>' LOGDIR = 'logs' ;;ログファイルディレクトリ PROMPT = '$' ;;実行時のキーとなる文字列
さて、「1. サーバにログイン」を実行するには以下のように書きます。
strconcat は文字列結合の関数です。
LOGINKEY = HOSTNAME strconcat LOGINKEY '.' strconcat LOGINKEY USERNAME getpassword 'password.dat' LOGINKEY PASSWD MSG = HOSTNAME strconcat MSG ':22 /ssh /auth=password /user=' strconcat MSG USERNAME strconcat MSG ' /passwd=' strconcat MSG PASSWD connect MSG
次に、「2. 実行ログの出力」をするためのコマンドを書きます。
今回は、「実行日時_ホスト名.log」としています。
gettime LOGDATE '%Y%m%d_%H%M%S' getdir MACRODIR CMD = 'cmd /c md ' strconcat CMD MACRODIR exec CMD LOGFILE = MACRODIR strconcat LOGFILE '/' strconcat LOGFILE LOGDIR strconcat LOGFILE '/' strconcat LOGFILE LOGDATE strconcat LOGFILE '_' strconcat LOGFILE HOSTNAME strconcat LOGFILE '.log' logopen LOGFILE 1 1
「3. 任意のコマンドの実行」を sendln の後ろに書きます。
今回は、日付取得の「date」コマンドとプロセスを表示する「ps」コマンドを実行します。
;;コマンドを直接書く方法 wait PROMPT sendln 'date' ;;変数などを文字列結合する方法 MSG = 'ps' strconcat MSG ' aux' wait PROMPT sendln MSG

サンプルのダウンロードは、こちらから。(.txt を .ttl へ変更してください)