#!/bin/bash # # ddclient This shell script takes care of starting and stopping # ddclient. # # chkconfig: 2345 65 35 # description: ddclient provides support for updating dynamic DNS services. CONF=/etc/ddclient/ddclient.conf program=ddclient [ -f $CONF ] || exit 0 system=unknown if [ -f /etc/fedora-release ]; then system=fedora elif [ -f /etc/redhat-release ]; then system=redhat elif [ -f /etc/debian_version ]; then system=debian fi PID='' if [ "$system" = "fedora" ] || [ "$system" = "redhat" ]; then . /etc/init.d/functions PID=`pidofproc $program` else PID=`ps -aef | grep "$program - sleep" | grep -v grep | awk '{print $2}'` fi PATH=/usr/bin:/usr/local/bin:${PATH} export PATH # See how we were called. case "$1" in start) # See if daemon=value is specified in the config file. # Assumptions: # * there are no quoted "#" characters before "daemon=" # (if there is a "#" it starts a comment) # * "daemon=" does not appear in a password or value # * if the interval value is 0, it is not quoted INTERVAL=$(sed -e ' s/^\([^#]*[,[:space:]]\)\{0,1\}daemon=\([^,[:space:]]*\).*$/\2/ t quit d :quit q ' "$CONF") if [ -z "$DELAY" ] || [ "$DELAY" = "0" ]; then DELAY="-daemon 300" else # use the interval specified in the config file DELAY='' fi echo -n "Starting ddclient: " if [ "$system" = "fedora" ] || [ "$system" = "redhat" ]; then daemon $program $DELAY else ddclient $DELAY fi echo ;; stop) # Stop daemon. echo -n "Shutting down ddclient: " if [ -n "$PID" ]; then if [ "$system" = "fedora" ] || [ "$system" = "redhat" ]; then killproc $program else kill $PID fi else echo "ddclient is not running" fi echo ;; restart) $0 stop $0 start ;; status) if [ "$system" = "fedora" ] || [ "$system" = "redhat" ]; then status $program else if test "$PID"; then for p in $PID; do echo "$program (pid $p) is running" done else echo "$program is stopped" fi fi ;; *) echo "Usage: ddclient {start|stop|restart|status}" exit 1 esac exit 0