Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # betlog - 2019-11-13--11-42-53
- #
- if [[ 14 -eq $(lsb_release -sr|awk -F'.' '{print $1}') ]];then
- echo "14.04 has problems with awk AND quakestat, so it can fuck off"
- exit
- fi
- quakestatFile="$(realpath ${0%/*})/BFBC2serverList.qstat"
- frequency=20
- portBase=19567
- portOffset=29321
- alarmKeywordArray=( "RBL" "SQDM" )
- alarmThresh=3 #max 9
- alarmArray=( "0.1" "/home/user/music/audio/_all-alarms-notifications-ringtones/DIR-usr-share-sounds-freedesktop-stereo/service-login.oga" )
- # ================
- tick=$frequency
- alarmToggle=1
- declare -a serverArray=()
- bold=$(tput smso)
- offbold=$(tput rmso)
- f_status(){
- tput cup 0 0
- echo -ne "$bold $(($frequency-$tick)) $offbold \
- 'a' or 0/1' toggle alarm $bold $(echo $alarmToggle|sed 's/1/ON/; s/0/OFF/') $offbold \
- '2-9' / 'q'+ / 'z'- : alarm threshold $bold $alarmThresh $offbold \\r"
- }
- echo "" #yes really
- while :; do
- f_status
- if [[ $tick -eq $frequency ]];then
- clear
- f_status
- tput cup 1 0
- i=0
- while read -r line; do
- if [[ ${line:0:1} == [0-9] ]];then
- serverArray[$i]=$(echo $line|awk -F':' '{print $1}')
- port=$(echo $line|awk -F':' '{print $2}')
- if [[ ${port:0:1} == [0-9] ]];then
- let port+=(portOffset)
- serverArray[$i]="${serverArray[$i]}:$port"
- else
- let port=(portBase+portOffset)
- serverArray[$i]="${serverArray[$i]}:$port"
- fi
- let i+=1
- fi
- done < "${quakestatFile}"
- for line in "${serverArray[@]}"; do
- data=$(quakestat -nocfg -retry 1 -timeout 3 -u -allowserverdups -default bfbc2 -ne -nh $line|\
- awk '{printf "%s\t%10s\t",$2,$8;for(i=9; i<=NF; ++i) printf "%s ", $i; print ""}')
- if [[ -n $data ]];then
- echo "$data"
- if [[ $alarmToggle -eq 1 && ${data%%/*} -ge $alarmThresh ]];then
- serverString=$(echo $data| awk '{for(i=2; i<=NF; ++i) printf "%s ", $i;}')
- for check in ${alarmKeywordArray[@]}; do
- if [[ "${serverString/"$check"/}" != "$serverString" ]]; then
- play --volume=${alarmArray[0]} "${alarmArray[1]}" &> /dev/null
- break
- fi
- done
- fi
- fi
- done
- tick=0
- fi
- read -n1 -t1 key
- case $key in
- a|A) alarmToggle=$((1-alarmToggle)) ;;
- q|Q) let alarmThresh+=1 ;;
- z|Z) let alarmThresh-=1 ;;
- 0) alarmToggle=0 ;;
- 1) alarmToggle=1 ;;
- 2) alarmThresh=2 ;;
- 3) alarmThresh=3 ;;
- 4) alarmThresh=4 ;;
- 5) alarmThresh=5 ;;
- 6) alarmThresh=6 ;;
- 7) alarmThresh=7 ;;
- 8) alarmThresh=8 ;;
- 9) alarmThresh=9 ;;
- esac
- tick=$((tick+1))
- done
Advertisement
Add Comment
Please, Sign In to add comment