⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 safe_asterisk_restart

📁 asterisk 是一个很有知名度开源软件
💻
字号:
#!/bin/bash# vim:textwidth=80:tabstop=4:shiftwidth=4:smartindent## this scripts prompts the user thrice, then tells asterisk to please shut down,# then kills asterisk and related processes with SIGTERM, then kills asterisk# and related processes with SIGKILL, and then starts asterisk with# safe_asterisk. Three arguments are currently supported, --no-countdown,# --no-prompt and --no-stop-now-firstLOGFILE=/var/log/asterisk/safe_asterisk_restart.logASTERISK=/usr/sbin/asteriskSAFE_ASTERISK=/usr/sbin/safe_asteriskDELAY=1					# Seconds between steps in countdownCOUNTDOWN_FROM=5			# Steps to count downDO_COUNTDOWN=1				# Should I do a countdown before restarting asterisk?DO_PROMPT=1				# Should I prompt the user?TRY_STOP_NOW_FIRST=1			# Attempt a 'stop now' before killing processes. Note					# that this might make this script hang if asterisk					# can't respond to the command.# processes to kill. Please list all AGI scripts here as well as the asterisk# processes, since asterisk may leave them unkilled.PROCVICTIMS="safe_asterisk asterisk mpg123"# helper functions# die ["string to print"]function die {	if [[ "$1" != "" ]]; then		echo $1	else		echo "ok. no harm done..."	fi	exit}# docmd "string to print" "cmd"function docmd {	printf "$1..."	`$2 >> $LOGFILE 2>&1`	RETCODE=$?	sleep $DELAY	if [[ "$RETCODE" == "0" ]]; then		echo " OK"	else		echo " FAILED"	fi}# prompt "string" "positive answer"function prompt {	printf "$1"	read answer	if [[ "$answer" != "$2" ]]; then		die	fi}# countdown secsfunction countdown {	echo -n "$1 "	if [[ $1 > 0 ]]; then		sleep 1		countdown $[ $1 - 1 ]	else		echo "boom!"	fi}# am I really root?if [[ "$UID" != "0" ]]; then	echo "Sorry, only root can do this." >&2	exit;fiecho "`date`: $0 invoked" >> $LOGFILE# bashfor ido	if [[ "$i" == "--no-countdown" ]]	then		unset DO_COUNTDOWN	fi	if [[ "$i" == "--no-prompt" ]]	then		unset DO_PROMPT	fi	if [[ "$i" == "--no-stop-now-first" ]]	then		unset TRY_STOP_NOW_FIRST	fidone[[ $DO_PROMPT ]] && prompt "Are you sure you want to restart asterisk? (yes/no)? " "yes"[[ $DO_PROMPT ]] && prompt "Really sure? (yes/no)? " "yes"[[ $DO_PROMPT ]] && prompt "Absolutely positive? (YES/no)? " "YES"[[ $DO_COUNTDOWN ]] && echo "OK, I'll do it, but if you're not sure about this, press ctrl+c now."[[ $DO_COUNTDOWN ]] && countdown $COUNTDOWN_FROM# doing the dirty work[[ $TRY_STOP_NOW_FIRST ]] && docmd "Asking asterisk kindly to shutdown" "$ASTERISK -rx 'stop now'"docmd "Sending asterisk processes the TERM signal" "killall -15 $PROCVICTIMS"docmd "Sending asterisk processes KILL signal" "killall -9 $PROCVICTIMS"docmd "Starting safe_asterisk" "$SAFE_ASTERISK"for i in $PROCVICTIMSdo	ps axf | grep -w $i | grep -v grepdone

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -