我会让 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 上继续。
请帮忙。
使用公钥认证连接以避免保留/维护硬拷贝密码。将本地用户内容的内容复制id_rsa.pub
到远程用户~/.ssh/authorized_keys
文件中,以建立公钥认证连接。
如果仍然想使用密码,那么可以制作期望脚本,如下所示,并更改期望脚本的第 2 行以匹配您的user
和server
和MY_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 与批处理模式一起使用并期望。
归档时间: |
|
查看次数: |
4031 次 |
最近记录: |