I need a cron script (either php or shell) that will: - delete all mp3's in a given directory - use wget to download the "new" mp3's - if wget failed (404 or any other reason) email (using sendmail) an error report - if wget downloaded the files successfully, chmod a remote directory (the remote server is a Mac, so the permissions change at will!), then scp them to the remote server (Mac, so wget doesn't work so well...or I'd run the script on that server) - if the scp didn't work (permissions, internet connection or any other reason) sendmail an error report I have everything working except the emailing of the error report....and the chmod. Here's what I have: Code: #!/bin/sh set -e cp /backup.mp3 /var/www/showdownloads/XXX/backup.mp3 cd /var/www/showdownloads/XXX rm *.mp3 wget -nd -r -l1 --no-parent -A.mp3 ftp://XXX:[email protected]/directory/ scp *.mp3 [email protected]:"/Volumes/XXX" exit Any ideas? Thanks!
I've finally had some time to work on this again. I've decided to add error checking (based on exit codes) and email from the code I already have working. Here's the problem I've run into: I tried to add the error checking after the scp command (while including a non-working IP addres - - - trying to make it fail). The exit code of the scp command is returning 0 (success) on a "lost connection" attempt. Here's my code: Code: #!/bin/bash #set -o errexit -o nounset -o xtrace cd /var/www/weather/ if [ $? -ne 0 ] ; then SUBJECT="Weather Currents Download Problem Encountered" # Email To ? EMAIL="[email protected]" # Email text/message EMAILMESSAGE="There was a problem downloading the currents for the weather. Please check the server." echo "This is an email message test"> $EMAILMESSAGE echo "This is email text" >>$EMAILMESSAGE # send an email using /bin/mail /usr/sbin/sendmail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE exit 1 fi wget --no-passive-ftp 'ftp://user:password@remote_ip_address/Current.mp3' if [ $? -ne 0 ] ; then SUBJECT="Weather Currents Download Problem Encountered" # Email To ? EMAIL="[email protected]" # Email text/message EMAILMESSAGE="There was a problem downloading the currents for the weather. Please check the server." echo "This is an email message test"> $EMAILMESSAGE echo "This is email text" >>$EMAILMESSAGE # send an email using /bin/mail /usr/sbin/sendmail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE exit 1 fi echo `scp Current.mp3 [email protected]:"/Volumes/Big\ Disk/ZWEATHER"` if [ $? -ne 0 ] ; then SUBJECT="Weather Currents Download Problem Encountered" # Email To ? EMAIL="[email protected]" # Email text/message EMAILMESSAGE="There was a problem downloading the currents for the weather. Please check the server." echo "This is an email message test"> $EMAILMESSAGE echo "This is email text" >>$EMAILMESSAGE # send an email using /bin/mail /usr/sbin/sendmail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE exit 1 fi echo `rm Current.mp3` if [ $? -ne 0 ] ; then SUBJECT="Weather Currents Download Problem Encountered" # Email To ? EMAIL="[email protected]" # Email text/message EMAILMESSAGE="There was a problem downloading the currents for the weather. Please check the server." echo "This is an email message test"> $EMAILMESSAGE echo "This is email text" >>$EMAILMESSAGE # send an email using /bin/mail /usr/sbin/sendmail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE exit 1 fi exit Here's the command run in Putty 192.168.2.246 doesn't exist...and should return an exit code of >0. Why would this return an exit code of 0?
I found it...I had copied and pasted a portion of previous code. The echo on the scp command caused the exit code of 0. After all, it did echo the command. As soon as I took out the echo and just used scp... everything worked as it should.