【问题标题】:SFTP connection issue with password使用密码的 SFTP 连接问题
【发布时间】:2018-04-12 10:30:24
【问题描述】:

我正在运行此脚本以在本地复制模式文件,但它要求输入密码,甚至传递硬编码值。

脚本:

PASSWORD="xyz"

sftp -oport=1002 user@host:/dir/archive/file*.txt /di/data/
<< EOF

$PASSWORD

quit

EOF

出现错误:

-bash-4.1$ sh sftp_with_password.sh
Connecting to user@host...
Password Authentication

【问题讨论】:

  • 当然&lt;&lt;EOF 必须与它尝试与之交互的命令位于同一行。
  • 结果是一样的。
  • -bash-4.1$ sh sftp_with_password.sh 正在连接FTP2.UPS.COM...密码认证密码:

标签: linux shell unix ftp sftp


【解决方案1】:

expect 脚本可以完成这项工作。

例如copy-sftp.exp

#!/usr/bin/expect
set password [lindex $argv 0]
spawn sftp -oport=1002 user@host:/dir/archive/file*.txt /di/data/
expect "Password"
send "$password\r"
send "quit\r"

然后就可以执行了:

expect copy-ftp.exp $PASSWORD

【讨论】:

  • 只需添加“设置超时-1”以确保传输不会中断,然后就可以了:D
【解决方案2】:

感谢 Gonzalo Matheu,我成功地使用代理发送了一个大文件到 sftp 的 send-sftp.exp :

#!/usr/bin/expect
set timeout -1
set password [lindex $argv 0]
set file [lindex $argv 1]
spawn sftp -o "ProxyCommand /usr/bin/connect -H <proxy-host>:<proxy-port> %h %p" <sftp-Username>@<sftp-HOST>
expect "password:"
send "$password\r"
expect "sftp>"
send "put $file\r"
expect "sftp>"
send "quit\r"

然后我执行它:

expect send-sftp.exp $PASSWORD /PATH/TO/MYFILE.zip

设置超时允许传输不会因期望的等待超时而停止,您可以根据自己的需要进行调整;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 2021-04-08
    • 2013-07-31
    • 2017-04-17
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    相关资源
    最近更新 更多