Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (3,768)  
Tera Term  (1,863)  
CrystalDiskInfo  (1,753)  
HandBrake Japanese Language Version  (1,682)  
CrystalDiskMark  (840)  
FFFTP  (808)  
ffdshow  (757)  
MergeDoc  (629)  
mixfont-mplus-ipa  (619)  
10  TortoiseSVN  (517)  
11  FreeMind  (445)  
12  BathyScaphe  (421)  
13  Amateras  (380)  
14  Boookends  (375)  
15  SMPlayer  (370)  
More >>

Tera Termマクロ活用入門(2):リモートマシンを自在に操作する

2010年01月18日 20:00 松島浩道 1 2 3

バッチファイルとの連携

 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

最終更新:2010年06月16日 15:32
SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.