当我在连接到服务器 A 的 Putty 中键入以下命令时。 我的文件从服务器 A 复制到服务器 B。
sshpass -p 'myPass' scp userB@serverB_ip:/file.txt /home/XXXXXX.txt
但是,当我将其写入 .sh 文件并通过 crontab 作业执行时,它不起作用。 我的Shell文件copyfilefromB.sh如下:
#!/bin/sh
echo "start"
sshpass -p 'myPass' scp userB@serverB_ip:/file.txt /home/XXXXXX.txt
echo "end"
(我也累了下面的,但是还不行)
/usr/bin/sshpass -p 'myPass' scp userB@serverB_ip:/file.txt /home/XXXXXX.txt
/usr/bin/sshpass -p 'myPass' /usr/bin/scp userB@serverB_ip:/file.txt /home/XXXXXX.txt
我的crontab文件如下:
0 1 * * * /usr/bin/sh /home/copyfilefromB.sh >> copyfilefromB.log
在日志文件中,我只能读取单词“start”和“end”,没有打印错误, 但复制过程失败。
我可以向你们寻求帮助吗?有人可以帮忙吗? 谢谢您的回答。
当您第一次运行 ssh 或 scp 时,它们会检查 ssh 公钥指纹 并询问您是否要将它们存储到
~/.ssh/known_hosts
。
cron 以 root 用户身份运行其任务,因此也许 /root/.ssh/known_hosts
处没有存储指纹
添加到您的脚本选项中
-oStrictHostKeyChecking=accept-new
:
#!/bin/sh
echo "start"
sshpass -p 'myPass' scp -oStrictHostKeyChecking=accept-new userB@serverB_ip:/file.txt /home/XXXXXX.txt
echo "end"