密码的SFTP连接问题

问题描述 投票:-1回答:2

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

脚本:

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
linux shell unix ftp sftp
2个回答
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

0
投票

感谢Gonzalo Matheu,我设法使用代理将send-sftp.exp发送到sftp:

#!/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

设置超时允许传输不被期望的等待超时停止,您可以根据您的需要调整它;)

© www.soinside.com 2019 - 2024. All rights reserved.