簡體   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