見出し画像

Tera Termマクロでscpによるファイル転送をする方法

scp(Secure Copy)は、昔Unixで使われていたrcp(Remote Copy)の代替で、ファイルを安全に送受信するためのプロトコルです。 Tera Termマクロでscpを使うことにより、簡単で安全にファイルの送受信を行うことができるようになります。


scpでファイルを送信する

scpでローカルファイルをリモートホストへ送信するためには、まず最初にsshでログインする必要があります。ログイン後、コマンドでローカルファイルをリモートホストへ送信します。

ローカルファイル名

リモートホストへ送信するローカルファイル名を相対パスで指定すると、Tera Termがインストールされているディレクトリからの相対パスになります。
scpsendを使う時は絶対パスで指定した方が良いかも知れません。

※後述するchangedirは使えません。

リモートファイル名

リモートホストで保存されるファイル名は省略することができます。また、ファイル名でなくフォルダ名でも指定できます。

リモートファイル名を省略した場合は、ログインしたユーザーのホームディレクトリにファイルが送信されます。

以下の例では、デスクトップ上のscp.tllがリモートホスト(Linuxサーバー)の/tmp/scp.ttlに保存されます。

connect '192.168.0.1 /ssh /auth=password /user=foo /passwd=MyPassword'
wait '$'
scpsend "C:\Users\foo\Desktop\scp.ttl" '/tmp/'

; プロセスを確認してscpの完了を待つ
do
	mpause 500
	sendln 'ps -ef | grep -c [s]cp'
	waitln '0' '1'
loop while result != 1

sendln 'exit'
end

scpでファイルを受信する

scpでファイルを受信する場合も最初にsshでログインする必要があります。ログイン後、scprecvコマンドでファイルを受信します。

保存先のディレクトリを指定する

保存するファイル名は省略でき、省略した場合はTera Termがインストールされているディレクトリに保存されます。

また、保存するファイル名を相対パスで指定した場合はTera Termがインストールされているディレクトリからの相対パスとなります。別のディレクトリからの相対パスへ変更したい場合は、changedirでベースディレクトリを変更してください。

単純にディレクトリを指定して保存したい場合はchangedirを使うと良いでしょう。

connect '192.168.0.1 /ssh /auth=password /user=foo /passwd=MyPassword'
wait '$'

; デスクトップに保存する場合
changedir 'C:\Users\foo\Desktop'
scprecv '/tmp/test2.ttl'

ファイル名を指定して保存する

ファイル名を指定して保存する場合、注意点として保存先のディレクトリ名のみ指定するとエラーとなります。ファイル名までしっかりと指定してください。

connect '192.168.0.1 /ssh /auth=password /user=foo /passwd=MyPassword'
wait '$'

; ファイル名を指定して保存する場合
scprecv '/tmp/test2.ttl' 'C:\Users\shj\Desktop\recvfile.ttl'

この記事が気に入ったらサポートをしてみませんか?