使用scp并以交互方式输入密码,文件复制进度将发送到控制台,但在脚本中使用sshpass来scp文件时没有控制台输出。
$ sshpass -p [password] scp [file] root@[ip]:/[dir]
似乎sshpass正在抑制或隐藏scp的控制台输出。有没有办法启用sshpass scp输出到控制台?
答案 0 :(得分:1)
这样:
output = $(sshpass -p $ PASSWD scp -v $ filename root@192.168.8.1:/ root 2>& 1)
echo“输出= $输出”
您在变量输出中重定向控制台输出。
或者,如果您只想查看scp命令的控制台输出,则应在ssh pass cmd中仅添加-v命令:
sshpass -p $ PASSWD scp -v $ filename root@192.168.8.1:/ root
答案 1 :(得分:1)
不完全是所期望的,但比沉默更好:
SSHPASS="12345" sshpass -e scp -v -r $FILES $DEST 2>&1 | grep -v debug1
请注意,-e
被认为比-p
更安全。
答案 2 :(得分:0)
在
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