別のネットワークの端末から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/にコピーされる。