自动Bash上传脚本与Crontab树莓派未运行



我试图让我的树莓派使用rysnc在一天中偶尔将文件上传到SFTP服务器。为此,我创建了一个bash脚本,并安装了一个crontab,以便在白天每隔几个小时运行一次。如果我运行bash脚本,它可以完美地工作,但它似乎从来没有使用crontab运行。

我做了以下操作:

  1. "sudo nano upload.sh">
  2. 创建以下bash脚本:
#!/bin/bash
sshpass -p "password" rsync -avh -e ssh /local/directory host.com:/remote/directory
  1. "sudo chmod +x upload.sh">
  2. 用"./upload.sh">
  3. 测试运行它

现在,我已经尝试了以下所有方法将其添加到crontab ("sudo crontab -e")

  1. 30 8、10、12、14、16 * * * ./upload.sh
  2. 30 8,10,12,14,16 * * */home/picam/upload.sh
  3. 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时,如何解决这个问题?

  1. 检查脚本是否正常工作(将其粘贴到shell中)

  2. 检查你的人群。业务正常运行—systemctl status crond.service。输出应该是">active (running)">

  3. 然后您可以尝试添加简单的测试作业到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

现在工作得很好——希望这能帮助到别人。

最新更新