| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/bin/bash
- # LGSM fn_serverquery function
- # Author: Daniel Gibbs
- # Website: http://danielgibbs.co.uk
- # Version: 011214
- # uses gsquery.py to directly query the server
- # detects if the server locks up
- if [ -f gsquery.py ]; then
- if [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then
- gameport=$(grep Port= "${systemdir}/${ini}"|grep -v Master|grep -v LAN|grep -v Proxy|grep -v Listen|sed 's/\Port=//g')
- port=$((${gameport} + 1))
- elif [ "${engine}" == "spark" ]; then
- port=$((${port} + 1))
- elif [ "${engine}" == "realvirtuality" ]; then
- port=${queryport}
- fi
- fn_printinfo "Monitoring ${servicename}: Detected gsquery.py"
- fn_scriptlog "Detected gsquery.py"
- sleep 1
- fn_printdots "Monitoring ${servicename}: Querying port: ${ip}:${port}: QUERYING"
- fn_scriptlog "Querying port: ${ip}:${port}: QUERYING"
- sleep 1
- serverquery=$(./gsquery.py -a ${ip} -p ${port} -e ${engine} 2>&1)
- exitcode=$?
- if [ "${exitcode}" == "1" ]||[ "${exitcode}" == "2" ]||[ "${exitcode}" == "3" ]||[ "${exitcode}" == "4" ]; then
- fn_printfail "Monitoring ${servicename}: Querying port: ${ip}:${port}: ${serverquery}"
- sleep 1
- echo -en "\n"
- fn_scriptlog "Querying port: ${ip}:${port}: ${serverquery}"
- if [[ -z "${secondquery}" ]]; then
- fn_printinfo "Monitoring ${servicename}: Waiting 30 seconds to re-query"
- fn_scriptlog "Waiting 30 seconds to re-query"
- sleep 30
- secondquery=1
- fn_serverquery
- fi
- if [ "${emailnotification}" = "on" ]; then
- subject="${servicename} Monitor - Starting ${servername}"
- failurereason="Failed to query ${servicename}: ${serverquery}"
- actiontaken="restarted ${servicename}"
- fn_emailnotification
- fi
- fn_restartserver
- exit
- elif [ "${exitcode}" == "0" ]; then
- fn_printok "Monitoring ${servicename}: Querying port: ${ip}:${port}: OK"
- fn_scriptlog "Querying port: ${ip}:${port}: OK"
- sleep 1
- echo -en "\n"
- exit
- elif [ "${exitcode}" == "126" ]; then
- fn_printfail "Monitoring ${servicename}: Querying port: ${ip}:${port}: ERROR: ./gsquery.py: Permission denied"
- fn_scriptlog "Querying port: ${ip}:${port}: ./gsquery.py: Permission denied"
- sleep 1
- echo -en "\n"
- echo "Attempting to resolve automatically"
- chmod +x -v gsquery.py
- exitcode=$?
- if [ "${exitcode}" == "0" ]; then
- fn_serverquery
- else
- echo -en "\nUnable to resolve automatically. Please manually fix permissions\n"
- owner=$(ls -al gsquery.py|awk '{ print $3 }')
- echo "As user ${owner} or root run the following command"
- whoami=$(whoami)
- echo -en "\nchown ${whoami}:${whoami} gsquery.py\n\n"
- exit
- fi
- else
- fn_printfail "Monitoring ${servicename}: Querying port: ${ip}:${port}: UNKNOWN ERROR"
- fn_scriptlog "Querying port: ${ip}:${port}: UNKNOWN ERROR"
- sleep 1
- echo -en "\n"
- ./gsquery.py -a ${ip} -p ${port} -e ${engine}
- exit
- fi
- fi
|