Monday, December 10, 2012

Proper upstart script for the No-IP DNS Update Client

Updated script again, better error handling and readability. Only looked at it due to a little bit of rebuilding my HTPC which runs this tool.
#!/bin/bash
### BEGIN INIT INFO
# Provides:          noip2
# Required-Start:    networking
# Required-Stop:     networking
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts instance of noip2
# Description:       No-IP DUC (DNS Update Client) start stop service script
### END INIT INFO
#
# copy to /etc/init.d
# run "update-rc.d noip2 defaults" to install
# run "update-rc.d noip2 remove" to remove
#
# Version 1 by Craig Lorentzen
# Version 2 - Added LSB INIT INFO
# Version 3 - Improved error handling and readability
# Version 4 - Added status (to check if the service is running and with what PID

NAME=noip2
PATH=/usr/local/bin
DAEMON=$PATH/$NAME
PID=$(/bin/pidof -s $DAEMON)

do_start()
{
        echo "Starting $NAME."
        echo
        if [ $PID ]; then
                echo "   WARNING: $NAME is already running."
                echo
                PID=
        else
                $($DAEMON)
        fi
}

do_stop()
{
        echo "Stopping $NAME."
        echo
        if [ $PID ]; then
                kill $PID
                PID=
        else
                echo "   WARNING: $NAME is not running."
                echo
        fi
}

do_status()
{
        if [ $PID ]; then
                echo "$NAME is running as $PID"
        else
                echo "$NAME is not running"
                echo
        fi
}

case "$1" in
        start)
                do_start
        ;;
        stop)
                do_stop
        ;;
        restart)
                echo "Restarting $NAME."
                do_stop
                do_start
        ;;
        status)
                do_status
        ;;
        *)
                echo "     Usage: $NAME (start|stop|restart|status)"
                echo
                exit 1
        ;;
esac

exit 0

If you have a No-IP Dynamic DNS account, free at no-ip.com Then you likely want to use the DUC (Dynamic Update Client) to automate the process of keeping it up-to-date. No-IP provides a client for Windows, Mac, and Linux. I have an Linux host running 24x7 at my house, so I decided to try the Linux version.

http://www.no-ip.com/downloads.php?page=linux

This tool used to be in the Ubuntu repositories but has been removed, so No-IP provides the source to be compiled, however, they don't provide a good start script and do not use the upstart method to install the automatic starter. So I decided to create a proper script to follow the upstart method. I understand that this script is not following all LSB standards, however, it should do what people need after following the process that No-IP Provides to compile and install.

1 comment:

Anonymous said...

This is really more of a sysV style startup script, not upstart.