52 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/bash
 | |
| 
 | |
| 
 | |
| 
 | |
| SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
 | |
| source $SCRIPTPATH/servers.private
 | |
| 
 | |
| checkAllSites(){
 | |
| 	eval server=( \${$1[@]} )
 | |
| 	for site in ${server[@]}; do
 | |
| 		printf "%-35s | %s \n" "$site" "$(checkURL $site $1)"
 | |
| 	done
 | |
| }
 | |
| 
 | |
| # This function takes 1 parameter, the name of an array in which to check a random URL
 | |
| checkRandomSite(){
 | |
| 	#The server variable will be equal to whichever server array we are looking at
 | |
| 	eval server=( \${$1[@]} )
 | |
| 	random=$(( ( RANDOM % (${#server[@]} - 1) )  + 1 ))
 | |
| 	urlToCheck=${server[$random]}
 | |
| 	echo $urlToCheck
 | |
| 	echo $(checkURL $urlToCheck $1)
 | |
| }
 | |
| 
 | |
| checkURL(){
 | |
| 	responce=$(curl -s --head -w %{http_code} $1 -L -o /dev/null --connect-timeout 20)
 | |
| 	if [ "$responce" != 200 ]; then
 | |
| 		pgrep -x dunst && notify-send -u critical "$1 is down" "<b>Server:</b> $2\n<b>Responce:</b> $responce" & disown
 | |
| 	fi
 | |
| 	echo $responce
 | |
| }
 | |
| 
 | |
| if [ ! -z "$1" ]; then
 | |
| 	if [ -z "$2" ]; then
 | |
| 		checked=$(eval checkRandomSite $1)
 | |
| 		checked=(${checked// / })
 | |
| 		#echo ${checked[0]}
 | |
| 		#echo ${checked[1]}
 | |
| 		echo $1
 | |
| 		echo ""
 | |
| 		if [ "${checked[1]}" = "200" ]; then
 | |
| 			echo "#00FF00"
 | |
| 		else
 | |
| 			echo "#FF8000"
 | |
| 
 | |
| 		fi
 | |
| 	elif [ "$2" = "all" ]; then
 | |
| 		checkAllSites $1
 | |
| 	fi
 | |
| else
 | |
| 	echo Please specify a server name
 | |
| fi
 |