使用 scp 并以交互方式输入密码,文件复制进度将发送到控制台,但在脚本中使用sshpass以 scp 文件时没有控制台输出。
$ sshpass -p [password] scp [file] root@[ip]:/[dir]
似乎 sshpass 正在抑制或隐藏 scp 的控制台输出。有没有办法让 sshpass scp 输出到控制台?
使用 scp 并以交互方式输入密码,文件复制进度将发送到控制台,但在脚本中使用sshpass以 scp 文件时没有控制台输出。
$ sshpass -p [password] scp [file] root@[ip]:/[dir]
似乎 sshpass 正在抑制或隐藏 scp 的控制台输出。有没有办法让 sshpass scp 输出到控制台?
后
sudo apt-get install expect
该文件send-files.exp
按需要工作:
#!/usr/bin/expect -f
spawn scp -r $FILES $DEST
match_max 100000
expect "*?assword:*"
send -- "12345\r"
expect eof
不完全是想要的,但比沉默更好:
SSHPASS="12345" sshpass -e scp -v -r $FILES $DEST 2>&1 | grep -v debug1
请注意,这-e
被认为比-p
.
输出:
Executing: program /usr/bin/ssh host servername, user username, command scp -v -t /src/path/dst_file.txt
OpenSSH_6.6.1, OpenSSL 1.0.1i-fips 6 Aug 2014
Authenticated to servername ([10.11.12.13]:22).
Sending file modes: C0600 590493 src_file.txt
Sink: C0600 590493 src_file.txt
Transferred: sent 594696, received 2600 bytes, in 0.1 seconds
Bytes per second: sent 8920671.8, received 39001.0
这样:
输出=$(sshpass -p $PASSWD scp -v $filename root@192.168.8.1:/root 2>&1)
回声“输出= $输出”
您在变量输出中重定向控制台输出。
或者,如果您只想查看 scp 命令的控制台输出,则应在 ssh pass cmd 中仅添加 -v 命令:
sshpass -p $PASSWD scp -v $filename root@192.168.8.1:/root