我试图让我的树莓派使用rysnc在一天中偶尔将文件上传到SFTP服务器。为此,我创建了一个bash脚本,并安装了一个crontab,以便在白天每隔几个小时运行一次。如果我运行bash脚本,它可以完美地工作,但它似乎从来没有使用crontab运行。
我做了以下操作:
- "sudo nano upload.sh">
- 创建以下bash脚本:
#!/bin/bash
sshpass -p "password" rsync -avh -e ssh /local/directory host.com:/remote/directory
- "sudo chmod +x upload.sh">
- 用"./upload.sh"> 测试运行它
现在,我已经尝试了以下所有方法将其添加到crontab ("sudo crontab -e")
- 30 8、10、12、14、16 * * * ./upload.sh
- 30 8,10,12,14,16 * * */home/picam/upload.sh
- 8、10、12、14、16 * * * bash/home/picam/upload.sh
这些都不起作用,因为没有上传新文件。我使用上面的方法2运行另一个bash脚本,没有问题。如果你能告诉我哪里出了问题,我会很感激的。我在8个不同的树莓派3B上做了这个,它们全天都在拍照。crontab上传对它们都不起作用。
更新:在记录crontab作业后,我发现了以下错误:
Host key verification failed.
rsync error: unexplained error (code 255) at rsync.c(703) [sender=3.2.3]
如果我尝试运行bash脚本而没有首先通过scp连接到服务器并接受证书,也会发生此错误。当从crontab调用rsync时,如何解决这个问题?
-
检查脚本是否正常工作(将其粘贴到shell中)
-
检查你的人群。业务正常运行—
systemctl status crond.service
。输出应该是">active (running)"> -
然后您可以尝试添加简单的测试作业到cron:
* * * * * echo "test" >> /path/whichyou/want/file.txt
检查此工作是否正常
多亏了Gordon Davisson在评论中给出的日志建议,我才能够确定问题所在。
发生了一个日志错误,正如上面的原始问题更新中提到的,rsync会在主机密钥验证时阻塞。
我的解决方案:告诉rsync不要检查主机密钥证书。我只是对upload.sh bash文件做了如下修改:
#!/bin/bash
sshpass -p "password" rsync -avh -e "ssh -o StrictHostKeyChecking=no" /local/directory host.com:/remote/directory
现在工作得很好——希望这能帮助到别人。