Check if MythTV backend is up

My MythTV frontend depends on the masterbackend to be up and running, mainly because some partitions are nfs mounted. So I created a simple script to check if the backend is responding to ping:

#!/bin/bash
 
function isup() {
 ping -q -n -c1 -w2 BACKEND_IP > /dev/null
 if [[ $? != 0 ]]; then
   sleep 5
   isup
 else
   echo "is up"
 fi
}
 
isup

But there is a small problem with this approach: the backend starts replying to ping long before nfsd and mythbackend are ready.

So instead of using ping, I created a script that checks if mythbackend’s status page (port 6544) is ready, using wget:

#!/bin/bash
 
function isbackendup {
  wget -q http://BACKEND_IP:6544 -O /dev/null
  if [[ $? != 0 ]]; then
    sleep 5
    isbackendup
  else
    stat_done
  fi
}
 
isbackendup

Finally I wrapped it all up in an ArchLinux rc script, and use WOL to wake the backend:

#!/bin/bash
 
. /etc/rc.conf
. /etc/rc.d/functions
 
function isbackendup {
  wget -q http://BACKEND_IP:6544 -O /dev/null
  if [[ $? != 0 ]]; then
    sleep 5
    isbackendup
  else
    stat_done
  fi
}
 
case "$1" in
  start)
    stat_busy "Checking if backend is up..."
    wol BACKEND_MACADDR > /dev/null
    isbackendup
    ;;
  stop)
    /bin/true
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
    echo "usage: $0 {start|stop|restart}"
esac

If you run ArchLinux just added it to /etc/rc.conf in the DAEMONS array.

Remember to replace BACKEND_IP and BACKEND_MACADDR with your own values.

Leave a comment

(required)
(required) (will not be published)

(Comment moderation is in use. Please do not submit your comment twice)