Files
natpass/init.d/np-cli
T
2021-08-12 17:51:28 +08:00

115 lines
2.5 KiB
Bash
Executable File

#!/bin/sh
#
# chkconfig: 2345 12 88
# description: natpass client
### BEGIN INIT INFO
# Provides: lwch748@gmail.com
# Required-Start: $network
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: np-cli
# Description: natpass client
### END INIT INFO
NAME=np-cli
WORKDIR=/opt/natpass
DAEMON=/opt/natpass/bin/$NAME
CONFIG=/opt/natpass/conf/client.yaml
PIDFILE=/var/run/$NAME.pid
wait_for_pid () {
try=0
while test $try -lt 35 ; do
case "$1" in
'created')
if [ -f "$2" ] ; then
try=''
break
fi
;;
'removed')
if [ ! -f "$2" ] ; then
try=''
break
fi
;;
esac
echo -n .
try=`expr $try + 1`
sleep 1
done
}
case "$1" in
start)
echo -n "Starting $NAME "
cd $WORKDIR
nohup $DAEMON -d -pid $PIDFILE -u nobody -conf $CONFIG > /dev/null 2>&1 &
if [ "$?" != 0 ] ; then
echo " failed"
exit 1
fi
wait_for_pid created $PIDFILE
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
stop)
echo -n "Gracefully shutting down $NAME "
if [ ! -r $PIDFILE ] ; then
echo "warning, no pid file found - $NAME is not running ?"
exit 1
fi
kill -QUIT `cat $PIDFILE`
wait_for_pid removed $PIDFILE
if [ -n "$try" ] ; then
echo " failed. Use force-quit"
exit 1
else
echo " done"
fi
;;
status)
if [ ! -r $PIDFILE ] ; then
echo "$NAME is stopped"
exit 0
fi
PID=`cat $PIDFILE`
if ps -p $PID | grep -q $PID; then
echo "$NAME (pid $PID) is running..."
else
echo "$NAME dead but pid file exists"
fi
;;
force-quit)
echo -n "Terminating $NAME "
if [ ! -r $PIDFILE ] ; then
echo "warning, no pid file found - $NAME is not running ?"
exit 1
fi
kill -TERM `cat $PIDFILE`
wait_for_pid removed $PIDFILE
if [ -n "$try" ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|status|force-quit|restart}"
exit 1
;;
esac
exit $?