以前、Tera TermのSCP機能を利用し、手動操作でファイルの転送を行う手順をご紹介させていただきました。覚えてらっしゃいますか?
⇒ Tera Term(SCP機能)を利用してのファイル転送(送信編)
⇒ Tera Term(SCP機能)を利用してのファイル転送(受信編)

簡単なファイルの送受信には、かなり便利な機能でしたよね。

ここでは、手動操作でSCP機能を利用しファイルの受信を行うのではなく、Tera Termのマクロ機能を利用してファイルの受信を行いたいと思います。

ただ接続先ホストのファイルを受信するだけではおもしろくないので、接続したホスト上であるコマンドを実行し、その結果をファイルに保存。その保存したファイルをローカルPCに受信する方法をご紹介したいと思います。

接続先の機器情報を収集するのに使ったりすると便利なマクロになります。

スポンサーリンク

テラタームマクロを使ったSCPファイル転送(受信編)

;================================================ 
; Filename    : file-tranfer-01.ttl 
; Description : SSH Auto login 
; Author      : JUNZOU
; Created     : 2011/04/10 
; modified    : 
;================================================ 
;; 接続先ホスト/ユーザ名/パスワード/ログ保存先設定 
HOSTADDR = '接続先IPアドレス'
USERNAME = 'ユーザ名' 
PASSWORD = 'パスワード' 
LOGSPATH = 'C:\work\' 
;================================================ 
;; ①コマンド組立て 
COMMAND = HOSTADDR 
strconcat COMMAND ':22 /ssh /2 /auth=password /user=' 
strconcat COMMAND USERNAME 
strconcat COMMAND ' /passwd=' 
strconcat COMMAND PASSWORD

;; ②接続 
connect COMMAND

;; 接続判定1(接続出来ない場合はメッセージを表示しマクロ終了) 
if result <> 2 then 
    messagebox 'It could not be connected.' 'Connection Error' 
    end 
endif

;; ③接続判定2(10秒以内にプロンプトが表示されない場合TeraTerm終了) 
timeout = 10 
wait '$' '#'
if result=0 then 
    disconnect 0 
    end 
endif

;; ④接続先ホスト上でコマンドを実行しファイルに保存 
sendln 'hostname &gt; /tmp/exec.log' 
sendln 'echo &gt;&gt; /tmp/exec.log' 
sendln 'df -k &gt;&gt; /tmp/exec.log' 
wait '$' '#'

;; ⑤ログファイル名指定 
getdate NOWDATE '%Y%m%d%H%M%S_' 
strconcat LOGSPATH NOWDATE 
strconcat LOGSPATH HOSTADDR 
strconcat LOGSPATH '_exec.log'

;; ⑥ファイル受信 
scprecv '/tmp/exec.log' LOGSPATH 
mpause 1000 
sendln 'exit'

;; ⑦マクロ終了 
end

マクロ内容の解説

④接続先ホスト上でコマンドを実行しファイルに保存

「接続先ホスト上でコマンドを実行しファイルに保存」のエリアでは、接続先のホスト上で指定したコマンドを実行し、実行結果をファイルに保存しています。

(実行するコマンドの内容は、自由に変更可能です)

⑤ローカルPC側のログファイル名指定

TeraTermのSCP機能では、ローカルPC側にファイルを受信する際に、同じ名前のファイルが存在するとエラーとなり受信が失敗してしまいます。そこで、ファイル名に日時(秒まで)を入れる事でファイル名の重複を排除しました。

実際のファイル名は「20110408135051_xxx.xxx.xxx.xxx_exec.log」の形式でローカルPCに保存します。

⑥ファイル受信(接続先ホスト→ローカルPC)

SCP機能でファイルの受信を行っています。

TTLコマンド「scprecv」の書式(△はスペース)

scprecv△リモートファイルフルパス名△ローカルPCファイルフルパス名

ファイルの受信中にエラーが出るようであれば「mpause 1000(1000ミリ秒)」の値をちょっと増やしてみてください。ファイルの受信中にマクロが終了してしまい、エラーを起こしている場合があります。

他の部分の解説については、ここでは割愛させていただきます。過去に「SSH自動接続マクロ」の中で詳しく解説していますので、そちらをご参照ください。

スポンサーリンク

おわりに

このテラタームマクロは、接続先のホスト上である特定のコマンドを実行し、その結果を受信したい時などに便利になってくるマクロです。スケジュールタスクなんかに設定しておけば一定間隔のログが取得出来たりします。

まあ便利なマクロですので、よろしければご利用くださいませ。