シェルスクリプトを作成し、SFTPサーバーにバックアップファイルを送信しようとしています。
remotepath=/backup/
expect -c "
spawn sftp [email protected]
expect "password:"
send "password123\r"
expect "sftp>"
send "put /back_up/bkp_2022.tar.gz $remotepath\r"
expect "sftp>"
send "bye\r"
"
これはファイルを転送せずに取得した出力です。単に「?send put」と「?send byer?」が生成されます。
-rw-r-----. 1 admin admin 1267 Aug 17 11:14 script.sh
-rw-r-----. 1 admin admin 0 Aug 17 11:15 ?send put
-rw-r-----. 1 admin admin 167 Aug 17 11:15 ?send byer?
助けてもらえますか?
答え1
内部引用符("
)をエスケープするか、ここでドキュメント構文を使用してください。
remotepath=/backup/
expect <<EOF
spawn sftp [email protected]
expect "password:"
send "password123\r"
expect "sftp>"
send "put /back_up/bkp_2022.tar.gz $remotepath\r"
expect "sftp>"
send "bye\r"
EOF
テストしてみませんでしたので参考にしてください