Your script looks ok. You should add
exit 0 /
exit 1, for failure / success .. more info below.
and it will be checked with every 20 minutes
If the script should run always, each 20 minutes in the background, you should use
cron, which is already available on your system.
Like that all output of your script will be mailed to root, if the script returns 1(FAILURE) .. however per default the root-mail just goes to some folder. You need to install & configure a mail-daemon to forward the root-mail to your personal mail-address. How that can be done is e.g. explained here: https://superuser.com/questions/306163/what-is-the-you-have-new-mail-message-in-linux-unix
Easy way to forward all email
Ok, here some commands to get things done.
1.) First you need a version of your script which exits 1 on failure. Something like this should do:
for i in $( cat $HOME/iplist.txt )
ping -q -c2 $i > /dev/null
if [ $? -eq 0 ]
echo $i "Pingable"
echo $i "Not Pingable"
if [ "$ALL_HOSTS_AVAILABLE" = false ] ; then
echo 'Some hosts were not available!'
2.) Now make sure you have sudo-permissions set for your user(you dont want to do things directly as root). If not, follow this manual:
How do I add a user to the "sudo" group?
Maybe you first need to install the package sudo
apt-get install sudo
3.) Copy your script to some folder which is visible to all users and hand it over to root. E.g:
sudo cp myScript /usr/local/bin
sudo chown root /usr/local/bin/myScript
sudo chgrp root /usr/local/bin/myScript
4.) Setup a cronjob which runs your script
# write out current crontab
crontab -l > mycron
# echo new cron into cron file */20 means each 20 minutes
# Check https://de.wikipedia.org/wiki/Cron for format
echo "*/20 * * * * /usr/local/bin/myScript" >> mycron
# install new cron file
sudo crontab mycron
5.) Install some MTA, so you get the email-notification working .. it looks like the most simple one is
sudo apt-get install nullmailer
.. I dont know details, just google for help to do the
nullmailer setup in the right way.