繁体   English   中英

Crontab Raspberry Pi 未运行的自动 Bash 上传脚本

[英]Automated Bash Upload Script with Crontab Raspberry Pi Not Running

我试图让我的 Raspberry Pi 全天使用 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”测试运行它

现在,我尝试了以下所有方法将其添加到 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. 30 8,10,12,14,16 * * * bash /home/picam/upload.sh

这些都不是基于没有上传新文件的事实。 我有另一个 bash 脚本使用上面的方法 2 运行没有问题。 如果能深入了解可能出了什么问题,我将不胜感激。 我已经在八个独立的 Raspberry Pi 3B 上完成了这项工作,它们全天都在拍照。 crontab 上传对它们都不起作用。

更新:在记录 crontab 作业时,我发现了以下错误:

Host key verification failed.
rsync error: unexplained error (code 255) at rsync.c(703) [sender=3.2.3]

如果我在没有先通过 scp 连接到服务器并接受证书的情况下尝试运行我的 bash 脚本,也会发生此错误。 从 crontab 调用 rsync 时如何解决这个问题?

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

  2. 检查您的 crond.service 是否正常工作 - 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

现在完美地工作——希望这对某人有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM