Teratermマクロのテンプレート

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 へ変更してください。

ssh2sample.txt