「Tera Term」(テラターム)はWindows向けのターミナルエミュレータとして有名だが、マクロ機能を利用することでネットワーク経由でサーバーやネットワーク機器を自動制御するためのツールとしても利用できる。今回は、ネットワーク経由でLinuxサーバーを制御したり、Windowsのバッチファイルと連携させて使用する例を紹介しよう。
TeraTermおよびTeraTermマクロを活用しよう
前回は「Tera Termマクロ活用入門(1):各種ログインを自動化する」と題し、Tera Termマクロの基本と、SSHを利用した自動ログインを行うマクロなどを紹介した。続いて本記事では、ネットワーク経由でLinuxサーバーを操作する例として、ログの取得やバッチ処理の実行、Windowsのバッチファイルとの連携などを行うマクロを紹介しよう。
なお、Tera Termの詳しい紹介やインストール方法、基本的な使い方、Cygwinとの連携方法などについては『Windows用定番SSHクライアント「Tera Term」の使い方』という記事でまとめられているので、こちらも参照していただきたい。
リモートのマシンでコマンドを実行し、その結果をローカルのファイルとして保存する
ネットワーク経由でサーバーを管理している場合、頻繁に利用するような各種診断コマンドやメンテナンスコマンド、ログの取得コマンドなどを自動実行するマクロを用意しておくと便利だ。次のリスト1は、「ネットワーク経由でSSH接続およびログイン→ログ取得の開始→コマンドの実行→ログアウト」という一連の作業を自動実行するマクロである。
このマクロでは、あらかじめ指定しておいたユーザー名で指定ホストにログインし、「df」コマンドを実行してその結果をローカルの指定ディレクトリに「df-<日付>-<時間>.log」というファイル名で保存するというものだ。この例ではdfコマンドを発行しているが、マクロ内の(1)の部分を書き換えることで任意のコマンドを実行できる。
リスト1 リモートマシンでdfコマンドを実行するTera Termマクロ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; username = '<ユーザー名>' hostname = "<ホスト名>" keyfile = "<SSH公開鍵のパス名>" remote_prompt = "$" ; リモートマシンのプロンプト記号。bash系なら「$」、cshなら「%」、tcshなら「>」など ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; パスワードの入力を求める msg = 'Enter password for user ' strconcat msg username passwordbox msg 'Get password' ; ログイン処理を実行 msg = hostname strconcat msg ':22 /ssh /auth=publickey /user=' strconcat msg username strconcat msg ' /keyfile=' strconcat msg keyfile strconcat msg ' /passwd="' strconcat msg inputstr strconcat msg '"' connect msg ; ログイン後の処理 ; 日時から保存ファイル名を組み立てる logfile = "Z:\softrev\teraterm2\" getdate timestamp "df-%Y%m%d-%H%M%S.log strconcat logfile timestamp logopen logfile 0 0 ; ログの記録を開始 wait remote_prompt sendln "df" ; 「df」コマンドを実行(1) wait remote_prompt logclose ; ログ記録を終了 closett ; 切断
この例では公開鍵認証を使用し、接続毎にパスフレーズを入力してログインを行っているが、パスフレーズをパスワードファイルに保存しておき、自動的にログインを行うことも可能だ。前回記事の「SSHで自動ログインを行う」を参考にマクロを修正して欲しい。
なお、リスト1のマクロでは、あくまでログとして結果をファイルに保存しているため、得られたファイルには下記のようにプロンプトやログインメッセージなどの情報が付加されてしまう。また、この方法ではテキスト形式のデータしか保存できない。
Last login: Fri Jan 15 18:34:17 2010 from *****.com
user11@*****:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 3842376 1451204 2195984 40% /
tmpfs 513300 0 513300 0% /lib/init/rw
tmpfs 513300 0 513300 0% /dev/shm
/dev/hda2 980340 8412 922128 1% /tmp
/dev/hda4 31657192 596480 29452608 2% /var
sf-file-users:/home/users
570593184 225962840 338833448 41% /home/users
sf-file-groups:/home/groups
865014080 292452944 563773096 35% /home/groups
user11@*****:~$
