All pastes #1543 Raw Edit

matt

public text v1 · immutable
#1543 ·published 2004-10-18 16:21 UTC
rendered paste body
#!/bin/bash

# ASTERISK RESTART SCRIPT
# MATT GIBSON (C) 2004
# LICENSE: BSD LICENSE

# BUGS:
#
# - if you start the script when no process is running, but there is a pid file, it'll error out
#   you'll have to delete $PIDFILE and $CTLFILE
# 
# - doesn't work on fedora for some reason *coughbecause it has a crond specific to redhat that breaks conventionscough*

# TODO:
#
# - should it be using stop graceful instead of stop now? or configurable?
# - add 'start/stop/restart' cli functions 
# - clean up the code
# - fix it for fedora
# - make it non root with a -u switch 

# INSTALLATION:
#
# cp restart_asterisk.sh /usr/sbin
# chown root.bin /usr/sbin/restart_asterisk.sh (or wheel or whatever, i run it as root)
# chmod +x /usr/sbin/restart_asterisk
# then add to cron %crontab -e 
#    # this is to stop and start asterisk daily at 4:20am
#      20 4 * * * /usr/sbin/restart_asterisk.sh | mail root


# SCRIPT BEGINS HERE


# Variables 

# user settings
SU="/bin/su"
SUUSER="asterisk"
USEROPT="-c /usr/sbin/safe_asterisk"

# asterisk specific
SAFEAST="/usr/sbin/safe_asterisk"
ASTERISK="/usr/sbin/asterisk"
PIDFILE="/var/run/asterisk/asterisk.pid"
CTLFILE="/var/run/asterisk/asterisk.ctl"

# nothing to edit here..

PATH="/bin:/sbin:/usr/bin:/usr/sbin"

if [ -f $SAFEAST -a -x !$SAFEAST ]; then
	echo
	echo "no asterisk to be run ... wussup"
	exit 1
fi 

# if the physical file exists
#checks for asterisk executable permissions
if [ -f $ASTERISK -a -x $ASTERISK ]; then 
	#check for pidfile existence
	if [ -f $PIDFILE ]; then
		echo
		echo -n "stopping and restarting asterisk:"
			
		# stop asterisk
		# figure out why that can't be a variable.. 
		$ASTERISK -rx "stop now"
		
		# make sure the pidfile disappears
		while [ -f $PIDFILE ]; do
			wait
		done

			# add something here to make sure that it disappears
			# if it doesn't, kill file, and restart away

		# start asterisk
		$SU $SUUSER $USEROPT
		echo -n " successfull"
		echo
		exit 0
	else
		$SU $SUUSER $USEROPT
		echo
		echo -n "starting asterisk:"
		echo -n " successfull"
		echo
		exit 0
	fi
else
	echo "no asterisk executable or executable not executable... fix things"
	exit 1
fi