简体   繁体   中英

Automated Bash Upload Script with Crontab Raspberry Pi Not Running

I'm attempting to have my Raspberry Pi use rysnc to upload files to an SFTP server sporadically throughout the day. To do so, I created a bash script and installed a crontab to run it every couple hours during the day. If I run the bash script, it works perfectly, but it never seems to run using crontab.

I did the following:

  1. "sudo nano upload.sh"
  2. Create the following bash script:
#!/bin/bash

sshpass -p "password" rsync -avh -e ssh /local/directory host.com:/remote/directory
  1. "sudo chmod +x upload.sh"
  2. Test running it with "./upload.sh"

Now, I have tried all the following ways to add it to 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

None of these work based on the fact that new files are not uploaded. I have another bash script running using method 2 above without issue. I would appreciate any insight into what might be going wrong. I have done this on eight separate Raspberry Pi 3B that are all taking photos throughout the day. The crontab upload works on none of them.

UPDATE: Upon logging the crontab job, I found the following error:

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

This error also occurred if I tried running my bash script without first connecting to the server via scp and accepting the certificate. How to get around this when calling rsync from crontab?

  1. check if the script is working properly at all ( paste it in shell)

  2. Check if your crond.service working properly - systemctl status crond.service . Output should be " active (running) "

  3. Then you can try add simply test job to cron: * * * * * echo "test" >> /path/whichyou/want/file.txt

and check if this job work properly

Thanks to logging recommendation from Gordon Davisson in comments, I was able to identify the problem.

A logging error occurred, as mentioned in the original question update above where rsync would choke on a host key verification.

My solution: tell rsync not to check host key certificates. I simply changed the upload.sh bash file the following:

#!/bin/bash

sshpass -p "password" rsync -avh -e "ssh -o StrictHostKeyChecking=no" /local/directory host.com:/remote/directory

Working perfectly now -- hope this helps someone.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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