Recently I wanted to add some "user friendliness" to a backup script that do an FTP over TLS upload of multiple files and implemented the following:
- a bash script that iterate through a directory (find) and upload (curl) and send a notification once completed.
- used Automator to create an Application (that a user can run) - The application send a notification that execute when clicked
- Created a "Login item" that execute the Automater application upon login and remind the user to perform backups (and the user can do so by clicking on the notification)
The bash script:
Loading ....
remember to make it executable : chmod u+x Backup_QB.sh
Some gotchas during the script troubleshooting:
- If you have an @ (at sign) in the username or password replace (URL-encode) it with the HTML character code for it namely %40 e.g. username 'man@server' will be 'man%40server'
- find command in the script needs to be completed with ' \;' remember the space.
For the Automator script to work correctly I had to install terminal-notifier from this Github
into the 'Applications' folder and point the script to the binary inside the app bundle for the application to work.
The command:
/Applications/terminal-notifier/terminal-notifier.app/Contents/MacOS/terminal-notifier -message "Time to run your backups" -title "Backup Script" -execute ~/Desktop/Backup_QB.sh
This was picked up during testing as the first run was from the terminal and 'sudo gem install terminal-notifier' and everything worked from the command line.
Terminal-notifier was used as the -execute function can be added that will execute a command if clicked.
save this as something.app in the 'Applications' folder.
At this point you have a fully working application that will create a notification and if the notification is clicked it will execute the backup script and send a second notification when completed.
and in the notification centre if configured.
When you click on the notification it will perform the backups as per the script and send the following notification upon completion:
Then finally to make sure a reminder is send to the user a login item is added to the profile to send this reminder whenever the user log in.
Open the Users & Groups pane of System Preferences and click the Login Items tab then add the 'Application' created in step 1.
Till a next time ....