Teratermマクロのテンプレート
Page Contents
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. サーバにログイン
さて、「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. 実行ログの出力
次に、「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. 任意のコマンドの実行
「3. 任意のコマンドの実行」を sendln の後ろに書きます。
今回は、日付取得の「date」コマンドとプロセスを表示する「ps」コマンドを実行します。
;;コマンドを直接書く方法
wait PROMPT
sendln 'date'
;;変数などを文字列結合する方法
MSG = 'ps'
strconcat MSG ' aux'
wait PROMPT
sendln MSG
サンプルのダウンロードは、こちらから。
* 拡張子を .txt から .ttl へ変更してください。