Browse Source

prevent too many steam api querys

pull/3568/head
Daniel Gibbs 4 years ago
parent
commit
04bbabd598
  1. 163
      lgsm/functions/info_distro.sh

163
lgsm/functions/info_distro.sh

@ -10,19 +10,19 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
### Game Server pid ### Game Server pid
if [ "${status}" == "1" ]; then if [ "${status}" == "1" ]; then
gameserverpid=$(tmux list-sessions -F "#{session_name} #{pane_pid}" | grep "^${sessionname} " | awk '{print $NF}') gameserverpid="$(tmux list-sessions -F "#{session_name} #{pane_pid}" | grep "^${sessionname} " | awk '{print $NF}')"
if [ "${engine}" == "source" ]; then if [ "${engine}" == "source" ]; then
srcdslinuxpid=$(ps -ef | grep -v grep | grep "${gameserverpid}" | grep srcds_linux | awk '{print $2}') srcdslinuxpid="$(ps -ef | grep -v grep | grep "${gameserverpid}" | grep srcds_linux | awk '{print $2}')"
elif [ "${engine}" == "goldsrc" ]; then elif [ "${engine}" == "goldsrc" ]; then
hldslinuxpid=$(ps -ef | grep -v grep | grep "${gameserverpid}" | grep hlds_linux | awk '{print $2}') hldslinuxpid="$(ps -ef | grep -v grep | grep "${gameserverpid}" | grep hlds_linux | awk '{print $2}')"
fi fi
fi fi
### Distro information ### Distro information
## Distro ## Distro
# Returns architecture, kernel and distro/os. # Returns architecture, kernel and distro/os.
arch=$(uname -m) arch="$(uname -m)"
kernel=$(uname -r) kernel="$(uname -r)"
# Distro Name - Ubuntu 16.04 LTS # Distro Name - Ubuntu 16.04 LTS
# Distro Version - 16.04 # Distro Version - 16.04
@ -33,46 +33,46 @@ kernel=$(uname -r)
distro_info_array=( os-release lsb_release hostnamectl debian_version redhat-release ) distro_info_array=( os-release lsb_release hostnamectl debian_version redhat-release )
for distro_info in "${distro_info_array[@]}"; do for distro_info in "${distro_info_array[@]}"; do
if [ -f "/etc/os-release" ]&&[ "${distro_info}" == "os-release" ]; then if [ -f "/etc/os-release" ]&&[ "${distro_info}" == "os-release" ]; then
distroname=$(grep "PRETTY_NAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}') distroname="$(grep "PRETTY_NAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
distroversion=$(grep "VERSION_ID" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}') distroversion="$(grep "VERSION_ID" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
distroid=$(grep "ID=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}') distroid="$(grep "ID=" /etc/os-release | grep -v _ID | awk -F\= '{gsub(/"/,"",$2);print $2}')"
distrocodename=$(grep "VERSION_CODENAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}') distrocodename="$(grep "VERSION_CODENAME" /etc/os-release | awk -F\= '{gsub(/"/,"",$2);print $2}')"
elif [ "$(command -v lsb_release 2>/dev/null)" ]&&[ "${distro_info}" == "lsb_release" ]; then elif [ "$(command -v lsb_release 2>/dev/null)" ]&&[ "${distro_info}" == "lsb_release" ]; then
if [ -z "${distroname}" ];then if [ -z "${distroname}" ];then
distroname=$(lsb_release -sd) distroname="$(lsb_release -sd)"
elif [ -z "${distroversion}" ]; then elif [ -z "${distroversion}" ]; then
distroversion=$(lsb_release -sr) distroversion="$(lsb_release -sr)"
elif [ -z "${distroid}" ]; then elif [ -z "${distroid}" ]; then
distroid=$(lsb_release -si) distroid="$(lsb_release -si)"
elif [ -z "${distrocodename}" ]; then elif [ -z "${distrocodename}" ]; then
distrocodename=$(lsb_release -sc) distrocodename="$(lsb_release -sc)"
fi fi
elif [ "$(command -v hostnamectl 2>/dev/null)" ]&&[ "${distro_info}" == "hostnamectl" ]; then elif [ "$(command -v hostnamectl 2>/dev/null)" ]&&[ "${distro_info}" == "hostnamectl" ]; then
if [ -z "${distroname}" ];then if [ -z "${distroname}" ];then
distroname=$(hostnamectl | grep "Operating System" | sed 's/Operating System: //g') distroname="$(hostnamectl | grep "Operating System" | sed 's/Operating System: //g')"
fi fi
elif [ -f "/etc/debian_version" ]&&[ "${distro_info}" == "debian_version" ]; then elif [ -f "/etc/debian_version" ]&&[ "${distro_info}" == "debian_version" ]; then
if [ -z "${distroname}" ]; then if [ -z "${distroname}" ]; then
distroname="Debian $(cat /etc/debian_version)" distroname="Debian $(cat /etc/debian_version)"
elif [ -z "${distroversion}" ]; then elif [ -z "${distroversion}" ]; then
distroversion=$(cat /etc/debian_version) distroversion="$(cat /etc/debian_version)"
elif [ -z "${distroid}" ]; then elif [ -z "${distroid}" ]; then
distroid="debian" distroid="debian"
fi fi
elif [ -f "/etc/redhat-release" ]&&[ "${distro_info}" == "redhat-release" ]; then elif [ -f "/etc/redhat-release" ]&&[ "${distro_info}" == "redhat-release" ]; then
if [ -z "${distroname}" ]; then if [ -z "${distroname}" ]; then
distroname=$(cat /etc/redhat-release) distroname="$(cat /etc/redhat-release)"
elif [ -z "${distroversion}" ]; then elif [ -z "${distroversion}" ]; then
distroversion=$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|fedora" | cut -d"-" -f3) distroversion="$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|fedora" | cut -d"-" -f3)"
elif [ -z "${distroid}" ]; then elif [ -z "${distroid}" ]; then
distroid=$(awk '{print $1}' /etc/redhat-release) distroid="$(awk '{print $1}' /etc/redhat-release)"
fi fi
fi fi
done done
## Glibc version ## Glibc version
# e.g: 1.17 # e.g: 1.17
glibcversion=$(ldd --version | sed -n '1s/.* //p') glibcversion="$(ldd --version | sed -n '1s/.* //p')"
## tmux version ## tmux version
# e.g: tmux 1.6 # e.g: tmux 1.6
@ -84,34 +84,38 @@ else
if [ "${tmuxvdigit}" -lt "16" ]; then if [ "${tmuxvdigit}" -lt "16" ]; then
tmuxv="$(tmux -V) (>= 1.6 required for console log)" tmuxv="$(tmux -V) (>= 1.6 required for console log)"
else else
tmuxv=$(tmux -V) tmuxv="$(tmux -V)"
fi fi
fi fi
if [ "$(command -V java 2>/dev/null)" ]; then if [ "$(command -V java 2>/dev/null)" ]; then
javaversion=$(java -version 2>&1 | grep "version") javaversion="$(java -version 2>&1 | grep "version")"
fi
if [ "$(command -v mono 2>/dev/null)" ]; then
monoversion="$(mono --version 2>&1 | grep -Po '(?<=version )\d')"
fi fi
## Uptime ## Uptime
uptime=$(</proc/uptime) uptime="$(</proc/uptime)"
uptime=${uptime/[. ]*/} uptime=${uptime/[. ]*/}
minutes=$(( uptime/60%60 )) minutes="$(( uptime/60%60 ))"
hours=$(( uptime/60/60%24 )) hours="$(( uptime/60/60%24 ))"
days=$(( uptime/60/60/24 )) days="$(( uptime/60/60/24 ))"
### Performance information ### Performance information
## Average server load ## Average server load
load=$(uptime|awk -F 'load average: ' '{ print $2 }') load="$(uptime|awk -F 'load average: ' '{ print $2 }')"
## CPU information ## CPU information
cpumodel=$(awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//') cpumodel="$(awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')"
cpucores=$(awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo) cpucores="$(awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo)"
cpufreqency=$(awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//') cpufreqency="$(awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')"
# CPU usage of the game server pid # CPU usage of the game server pid
if [ -n "${gameserverpid}" ]; then if [ -n "${gameserverpid}" ]; then
cpuused=$(ps --forest -o pcpu -g "${gameserverpid}"|awk '{s+=$1} END {print s}') cpuused="$(ps --forest -o pcpu -g "${gameserverpid}"|awk '{s+=$1} END {print s}')"
cpuusedmhz=$(echo "${cpufreqency} * ${cpuused} / 100" | bc ) cpuusedmhz="$(echo "${cpufreqency} * ${cpuused} / 100" | bc)"
fi fi
## Memory information ## Memory information
@ -122,36 +126,36 @@ if [ "$(command -v numfmt 2>/dev/null)" ]; then
# Issue #2005 - Kernel 3.14+ contains MemAvailable which should be used. All others will be calculated. # Issue #2005 - Kernel 3.14+ contains MemAvailable which should be used. All others will be calculated.
# get the raw KB values of these fields. # get the raw KB values of these fields.
physmemtotalkb=$(grep MemTotal /proc/meminfo | awk '{print $2}') physmemtotalkb="$(grep MemTotal /proc/meminfo | awk '{print $2}')"
physmemfreekb=$(grep ^MemFree /proc/meminfo | awk '{print $2}') physmemfreekb="$(grep ^MemFree /proc/meminfo | awk '{print $2}')"
physmembufferskb=$(grep ^Buffers /proc/meminfo | awk '{print $2}') physmembufferskb="$(grep ^Buffers /proc/meminfo | awk '{print $2}')"
physmemcachedkb=$(grep ^Cached /proc/meminfo | awk '{print $2}') physmemcachedkb="$(grep ^Cached /proc/meminfo | awk '{print $2}')"
physmemreclaimablekb=$(grep ^SReclaimable /proc/meminfo | awk '{print $2}') physmemreclaimablekb="$(grep ^SReclaimable /proc/meminfo | awk '{print $2}')"
# check if MemAvailable Exists. # check if MemAvailable Exists.
if grep -q ^MemAvailable /proc/meminfo; then if grep -q ^MemAvailable /proc/meminfo; then
physmemactualfreekb=$(grep ^MemAvailable /proc/meminfo | awk '{print $2}') physmemactualfreekb="$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')"
else else
physmemactualfreekb=$((physmemfreekb+physmembufferskb+physmemcachedkb)) physmemactualfreekb="$((physmemfreekb+physmembufferskb+physmemcachedkb))"
fi fi
# Available RAM and swap. # Available RAM and swap.
physmemtotalmb=$((physmemtotalkb/1024)) physmemtotalmb="$((physmemtotalkb/1024))"
physmemtotal=$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}K") physmemtotal="$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}K")"
physmemfree=$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K") physmemfree="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")"
physmemused=$(numfmt --to=iec --from=iec --suffix=B "$((physmemtotalkb-physmemfreekb-physmembufferskb-physmemcachedkb-physmemreclaimablekb))K") physmemused="$(numfmt --to=iec --from=iec --suffix=B "$((physmemtotalkb-physmemfreekb-physmembufferskb-physmemcachedkb-physmemreclaimablekb))K")"
physmemavailable=$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K") physmemavailable="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")"
physmemcached=$(numfmt --to=iec --from=iec --suffix=B "$((physmemcachedkb+physmemreclaimablekb))K") physmemcached="$(numfmt --to=iec --from=iec --suffix=B "$((physmemcachedkb+physmemreclaimablekb))K")"
swaptotal=$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapTotal /proc/meminfo | awk '{print $2}')K") swaptotal="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapTotal /proc/meminfo | awk '{print $2}')K")"
swapfree=$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapFree /proc/meminfo | awk '{print $2}')K") swapfree="$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapFree /proc/meminfo | awk '{print $2}')K")"
swapused=$(numfmt --to=iec --from=iec --suffix=B "$(($(grep ^SwapTotal /proc/meminfo | awk '{print $2}')-$(grep ^SwapFree /proc/meminfo | awk '{print $2}')))K") swapused="$(numfmt --to=iec --from=iec --suffix=B "$(($(grep ^SwapTotal /proc/meminfo | awk '{print $2}')-$(grep ^SwapFree /proc/meminfo | awk '{print $2}')))K")"
# RAM usage of the game server pid # RAM usage of the game server pid
# MB # MB
if [ "${gameserverpid}" ]; then if [ "${gameserverpid}" ]; then
memused=$(ps --forest -o rss -g "${gameserverpid}" | awk '{s+=$1} END {print s}'| awk '{$1/=1024;printf "%.0f",$1}{print $2}') memused="$(ps --forest -o rss -g "${gameserverpid}" | awk '{s+=$1} END {print s}'| awk '{$1/=1024;printf "%.0f",$1}{print $2}')"
# % # %
pmemused=$(ps --forest -o %mem -g "${gameserverpid}" | awk '{s+=$1} END {print s}') pmemused="$(ps --forest -o %mem -g "${gameserverpid}" | awk '{s+=$1} END {print s}')"
fi fi
else else
# Older distros will need to use free. # Older distros will need to use free.
@ -161,47 +165,47 @@ else
else else
humanreadable="-h" humanreadable="-h"
fi fi
physmemtotalmb=$(free -m | awk '/Mem:/ {print $2}') physmemtotalmb="$(free -m | awk '/Mem:/ {print $2}')"
physmemtotal=$(free ${humanreadable} | awk '/Mem:/ {print $2}') physmemtotal="$(free ${humanreadable} | awk '/Mem:/ {print $2}')"
physmemfree=$(free ${humanreadable} | awk '/Mem:/ {print $4}') physmemfree="$(free ${humanreadable} | awk '/Mem:/ {print $4}')"
physmemused=$(free ${humanreadable} | awk '/Mem:/ {print $3}') physmemused="$(free ${humanreadable} | awk '/Mem:/ {print $3}')"
oldfree=$(free ${humanreadable} | awk '/cache:/') oldfree="$(free ${humanreadable} | awk '/cache:/')"
if [ "${oldfree}" ]; then if [ "${oldfree}" ]; then
physmemavailable="n/a" physmemavailable="n/a"
physmemcached="n/a" physmemcached="n/a"
else else
physmemavailable=$(free ${humanreadable} | awk '/Mem:/ {print $7}') physmemavailable="$(free ${humanreadable} | awk '/Mem:/ {print $7}')"
physmemcached=$(free ${humanreadable} | awk '/Mem:/ {print $6}') physmemcached="$(free ${humanreadable} | awk '/Mem:/ {print $6}')"
fi fi
swaptotal=$(free ${humanreadable} | awk '/Swap:/ {print $2}') swaptotal="$(free ${humanreadable} | awk '/Swap:/ {print $2}')"
swapused=$(free ${humanreadable} | awk '/Swap:/ {print $3}') swapused="$(free ${humanreadable} | awk '/Swap:/ {print $3}')"
swapfree=$(free ${humanreadable} | awk '/Swap:/ {print $4}') swapfree="$(free ${humanreadable} | awk '/Swap:/ {print $4}')"
fi fi
### Disk information ### Disk information
## Available disk space on the partition. ## Available disk space on the partition.
filesystem=$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $1}') filesystem="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $1}')"
totalspace=$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $2}') totalspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $2}')"
usedspace=$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $3}') usedspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $3}')"
availspace=$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $4}') availspace="$(LC_ALL=C df -hP "${rootdir}" | tail -n 1 | awk '{print $4}')"
## LinuxGSM used space total. ## LinuxGSM used space total.
rootdirdu=$(du -sh "${rootdir}" 2> /dev/null | awk '{print $1}') rootdirdu="$(du -sh "${rootdir}" 2> /dev/null | awk '{print $1}')"
if [ -z "${rootdirdu}" ]; then if [ -z "${rootdirdu}" ]; then
rootdirdu="0M" rootdirdu="0M"
fi fi
## LinuxGSM used space in serverfiles dir. ## LinuxGSM used space in serverfiles dir.
serverfilesdu=$(du -sh "${serverfiles}" 2> /dev/null | awk '{print $1}') serverfilesdu="$(du -sh "${serverfiles}" 2> /dev/null | awk '{print $1}')"
if [ -z "${serverfilesdu}" ]; then if [ -z "${serverfilesdu}" ]; then
serverfilesdu="0M" serverfilesdu="0M"
fi fi
## LinuxGSM used space total minus backup dir. ## LinuxGSM used space total minus backup dir.
rootdirduexbackup=$(du -sh --exclude="${backupdir}" "${serverfiles}" 2> /dev/null | awk '{print $1}') rootdirduexbackup="$(du -sh --exclude="${backupdir}" "${serverfiles}" 2> /dev/null | awk '{print $1}')"
if [ -z "${rootdirduexbackup}" ]; then if [ -z "${rootdirduexbackup}" ]; then
rootdirduexbackup="0M" rootdirduexbackup="0M"
fi fi
@ -209,7 +213,7 @@ fi
## Backup info ## Backup info
if [ -d "${backupdir}" ]; then if [ -d "${backupdir}" ]; then
# Used space in backups dir. # Used space in backups dir.
backupdirdu=$(du -sh "${backupdir}" | awk '{print $1}') backupdirdu="$(du -sh "${backupdir}" | awk '{print $1}')"
# If no backup dir, size is 0M. # If no backup dir, size is 0M.
if [ -z "${backupdirdu}" ]; then if [ -z "${backupdirdu}" ]; then
backupdirdu="0M" backupdirdu="0M"
@ -221,25 +225,25 @@ if [ -d "${backupdir}" ]; then
# If there are backups in backup dir. # If there are backups in backup dir.
if [ "$(find "${backupdir}" -name "*.tar.gz" | wc -l)" -ne "0" ]; then if [ "$(find "${backupdir}" -name "*.tar.gz" | wc -l)" -ne "0" ]; then
# number of backups. # number of backups.
backupcount=$(find "${backupdir}"/*.tar.gz | wc -l) backupcount="$(find "${backupdir}"/*.tar.gz | wc -l)"
# most recent backup. # most recent backup.
lastbackup=$(ls -1t "${backupdir}"/*.tar.gz | head -1) lastbackup="$(ls -1t "${backupdir}"/*.tar.gz | head -1)"
# date of most recent backup. # date of most recent backup.
lastbackupdate=$(date -r "${lastbackup}") lastbackupdate="$(date -r "${lastbackup}")"
# no of days since last backup. # no of days since last backup.
lastbackupdaysago=$(( ( $(date +'%s') - $(date -r "${lastbackup}" +'%s') )/60/60/24 )) lastbackupdaysago="$(( ( $(date +'%s') - $(date -r "${lastbackup}" +'%s') )/60/60/24 ))"
# size of most recent backup. # size of most recent backup.
lastbackupsize=$(du -h "${lastbackup}" | awk '{print $1}') lastbackupsize="$(du -h "${lastbackup}" | awk '{print $1}')"
fi fi
fi fi
# Network Interface name # Network Interface name
netint=$(ip -o addr | grep "${ip}" | awk '{print $2}') netint="$(ip -o addr | grep "${ip}" | awk '{print $2}')"
netlink=$(ethtool "${netint}" 2>/dev/null| grep Speed | awk '{print $2}') netlink="$(ethtool "${netint}" 2>/dev/null| grep Speed | awk '{print $2}')"
# External IP address # External IP address
if [ -z "${extip}" ]; then if [ -z "${extip}" ]; then
extip=$(curl --connect-timeout 10 -s https://api.ipify.org 2>/dev/null) extip="$(curl --connect-timeout 10 -s https://api.ipify.org 2>/dev/null)"
exitcode=$? exitcode=$?
# Should ifconfig.co return an error will use last known IP. # Should ifconfig.co return an error will use last known IP.
if [ ${exitcode} -eq 0 ]; then if [ ${exitcode} -eq 0 ]; then
@ -247,14 +251,14 @@ if [ -z "${extip}" ]; then
echo -e "${extip}" > "${tmpdir}/extip.txt" echo -e "${extip}" > "${tmpdir}/extip.txt"
else else
if [ -f "${tmpdir}/extip.txt" ]; then if [ -f "${tmpdir}/extip.txt" ]; then
extip=$(cat "${tmpdir}/extip.txt") extip="$(cat "${tmpdir}/extip.txt")"
else else
fn_print_error_nl "Unable to get external IP" fn_print_error_nl "Unable to get external IP"
fi fi
fi fi
else else
if [ -f "${tmpdir}/extip.txt" ]; then if [ -f "${tmpdir}/extip.txt" ]; then
extip=$(cat "${tmpdir}/extip.txt") extip="$(cat "${tmpdir}/extip.txt")"
else else
fn_print_error_nl "Unable to get external IP" fn_print_error_nl "Unable to get external IP"
fi fi
@ -271,8 +275,7 @@ else
fi fi
# Steam Master Server - checks if detected by master server. # Steam Master Server - checks if detected by master server.
if [ "${masterserverbypass}" == "1" ]; then if [ -z "${displaymasterserver}" ]; then
masterserverbypass=1
if [ "$(command -v jq 2>/dev/null)" ]; then if [ "$(command -v jq 2>/dev/null)" ]; then
if [ "${ip}" ]&&[ "${port}" ]; then if [ "${ip}" ]&&[ "${port}" ]; then
if [ "${steammaster}" == "true" ]||[ "${commandname}" == "DEV-QUERY-RAW" ]; then if [ "${steammaster}" == "true" ]||[ "${commandname}" == "DEV-QUERY-RAW" ]; then

Loading…
Cancel
Save