带有 EXPECT 和 PUT 到 SFTP 服务器的 Shell 脚本

带有 EXPECT 和 PUT 到 SFTP 服务器的 Shell 脚本

我正在编写 shell 脚本,并尝试将备份文件发送到 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

请注意,我没有测试

相关内容