バッチファイルとの連携
Windows上で簡単な定型処理を実行する方法の1つに、バッチファイルを利用するものがある。バッチファイルはMS-DOS時代から備えられているシンプルな自動処理機構で、利用した経験があるユーザーも多いだろう。続いては、このバッチファイルとTera Termマクロを連携させる例を紹介しよう。
Tera Termのマクロ機能は「ttpmacro.exe」という実行ファイルが担っており、バッチファイル内で実行したいマクロファイルを引数にttpmacro.exeを実行することで、バッチファイル内からTera Termマクロを呼び出すことができる。
次のリスト3、4はバッチファイルとTera Termマクロを利用し、任意のファイルを指定したサーバーにSCPでアップロードする、という例だ。リスト3のマクロを「scpupload.ttl」、リスト4のマクロを「scpupload.bat」という名前で同じディレクトリに保存し、次のようにコマンドプロンプトから実行することで指定したサーバーにファイルをアップロードできる。
> scpupload.bat <アップロードするファイル> <保存先パス名>
リスト3 SCPで任意のファイルをアップロードするTera Termマクロ(scpupload.ttl)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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 ; ログイン後の処理 ; SCPを実行 wait remote_prompt ; 接続待ち scpsend param2 param3 ; 指定したファイルをscpでアップロード mpause 100 ; 0.1秒間待機 ; 切断 sendln "exit" ; 切断 unlink ; 制御終了
リスト4 SCPで任意のファイルをアップロードするバッチファイル
@echo off REM scp upload with Tera Term if "%1" == "" goto error "C:\Program Files\teraterm\ttpmacro.exe" /I %~dp0scpupload.ttl %1 %2 goto end :error echo ttscp.bat file dest :end
この例では、ttpmacro.exeの引数として処理したいファイルの名前を与えている。ttpmacro.exeに与えた引数は、Tera Termマクロ内では順に「param2」、「param3」、「param3」……という変数名でアクセス可能だ。Tera Termマクロ内では、引数をそのまま「scpsend」コマンド(指定したファイルをSCPでアップロードするコマンド)の引数に与えている。なお、引数としてはファイルのフルパスを与える必要がある点に注意して欲しい。
ここでは解説のため簡単な例を挙げているが、これらを利用してたとえばローカル側で実行した処理結果をリモートマシンに自動アップロードし、リモートマシンで処理してその結果をローカルマシンに返す、といった応用なども考えられるだろう。
今回紹介したツール:TeraTerm
- 作者:TeraTerm Project
- 動作環境:Windows
- ライセンス:BSDライセンス、GPLv2
- ホームページ:http://ttssh2.sourceforge.jp/
- ダウンロードページ:http://sourceforge.jp/projects/ttssh2/
