#!/bin/sh # /etc/init.d/indiserver # # INDI server startup script # Radek Kaczorek - rkaczorek@gmail.com # ### BEGIN INIT INFO # Provides: indiserver # Required-Start: $local_fs # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: indiserver ### END INIT INFO # DO NOT EDIT THIS FILE # set your drivers in /etc/indi.conf SCRIPT="$0" if [ -e '/etc/indi.conf' ]; then . /etc/indi.conf else RUNAS="root" IP=$(hostname -I|sed -e 's/^ *//' -e 's/ *$//') PORT="7624" DRIVERS="indi_simulator_dome indi_simulator_telescope indi_simulator_ccd indi_simulator_focus" BIN=`which indiserver` LOGDIR="/var/log/indi" FIFO="/var/run/indi" LOCKFILE="/var/lock/indi" MAXFILE=100 fi # check if binary exists if [ ! $BIN ]; then echo "indiserver binary does not exist" exit 1; fi # set lock file if [ ! -e $LOCKFILE ]; then touch $LOCKFILE fi # set log dir if [ ! -e $LOGDIR ]; then mkdir $LOGDIR chown $RUNAS.root $LOGDIR fi # set fifo file if [ ! -e $FIFO ]; then mkfifo $FIFO chown $RUNAS.root $FIFO fi # Carry out specific functions when asked to by the system case "$1" in start) lock=`cat $LOCKFILE` if [ ! $lock ] || [ $lock = 0 ]; then echo "Starting INDI server" su - $RUNAS -c "$BIN -m $MAXFILE -l $LOGDIR -f $FIFO -p $PORT $DRIVERS > /dev/null 2>&1 &" pid=$(pidof indiserver) echo $pid > $LOCKFILE else echo "INDI server already running" fi ;; stop) lock=`cat $LOCKFILE` if [ $lock ] && [ $lock != 0 ]; then echo "Stopping INDI server" kill -TERM $lock &>/dev/null echo 0 > $LOCKFILE rm -rf $FIFO else echo "No INDI server running" fi ;; restart) $SCRIPT stop && $SCRIPT start ;; status) lock=`cat $LOCKFILE` if [ $lock ] && [ $lock != 0 ] && [ `netstat -tlp|grep $lock|wc -l` = 1 ]; then echo "INDI server is running on $IP:$PORT" else echo "INDI server is NOT running" fi ;; *) echo "Usage: /etc/init.d/indiserver {start|stop|status}" exit 1 ;; esac exit 0