自动输入 SCP 密码

Ace*_*Ace 1 ssh scp solaris

我会让 scp 在 cronjob 上,所以我宁愿使用自动输入其他服务器的密码。

sshpass -p 'your_password' scp user@abc.com:/usr/etc/Output/*.txt /usr/abc/

这个脚本对我不起作用,我使用的是 Solaris。

还请说明答案。谢谢你。

额外的

我用了

#!/usr/local/bin/expect -f

spawn bash -c "scp /apps/DASHBOARD/xx/xxx/xxxx/TEST1.*.txt dash@MYSERV:/apps/DASHBOARD/xx/xxx1/"
expect "*Password:*"
send "pass123\r"
interact

spawn bash -c "scp /apps/DASHBOARD/xx/xxx/xxxx/SAMP1.*.txt* dash@MYSERV:/apps/DASHBOARD/xx/samp1/"
expect "*Password:*"
send "pass123\r"
interact
Run Code Online (Sandbox Code Playgroud)

我把它放在我的 CRONJOB 上。如果我手动运行这个脚本,这个脚本对我有用,但是当我在我的 CRONJOB 上设置它时,它不会在第二个 scp 上继续。

请帮忙。

igi*_*nak 6

使用公钥认证连接以避免保留/维护硬拷贝密码。将本地用户内容的内容复制id_rsa.pub到远程用户~/.ssh/authorized_keys文件中,以建立公钥认证连接。

如果仍然想使用密码,那么可以制作期望脚本,如下所示,并更改期望脚本的第 2 行以匹配您的userserverMY_PASSWORD您的密码:

spawn scp "user@abc.com:/usr/etc/Output/*.txt" /usr/abc/
expect "user@abc.com\'s password:" 
send "MY_PASSWORD\r"
interact
Run Code Online (Sandbox Code Playgroud)

感谢@pynexj 在后链接到 StackOverFlow我不得不修改脚本如下:

#!/usr/bin/expect -f

spawn scp /TEST1.txt root@1.2.3.4:/root/
expect "*assword:*"
send "password\r"
expect eof

spawn scp /TEST2.txt root@1.2.3.4:/root/
expect "*assword:*"
send "password\r"
expect eof
exit
Run Code Online (Sandbox Code Playgroud)

请注意,如果您有多个文件或模式需要传输,您也可以考虑将 SFTP 与批处理模式一起使用并期望。