別のネットワークの端末からscpでファイルをコピーするバッチ処理

別のネットワーク端末からファイルをコピーする処理を自動化したい。
そういう時は、本当はセキュリティを考慮して
公開鍵認証を使ってscpでファイルをコピーするのが一番良いやり方。
その辺りは↓とか参考にすると良いのかな?
ssh scp sftp の正しい自動実行方法
 
これは公開鍵認証を使えない時の最終手段。
 
filecopy.expというファイルを作る。
中身は↓こんな感じ。

#!/usr/bin/expect

set timeout 5
spawn /usr/bin/scp -q user@xxx.xxx.xxx.xxx:file.txt /directory1/directory2/.
expect "Password:"
send "password\n"
interact

expectは「この文字列が表示されたら」なので
scpを実行した時にパスワードを聞かれたら
sendで指定したパスワードを入力する、ということになる。
 
ファイルを用意したら

$ expect filecopy.exp

で、実行すればOK。
file.txtは/directory1/directory2/にコピーされる。