Browse Source

prevent too many steam api querys

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

165
lgsm/functions/info_distro.sh

@ -10,19 +10,19 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
### Game Server pid
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
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
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
### Distro information
## Distro
# Returns architecture, kernel and distro/os.
arch=$(uname -m)
kernel=$(uname -r)
arch="$(uname -m)"
kernel="$(uname -r)"
# Distro Name - Ubuntu 16.04 LTS
# Distro Version - 16.04
@ -33,46 +33,46 @@ kernel=$(uname -r)
distro_info_array=( os-release lsb_release hostnamectl debian_version redhat-release )
for distro_info in "${distro_info_array[@]}"; do
if [ -f "/etc/os-release" ]&&[ "${distro_info}" == "os-release" ]; then
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}')
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}')
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}')"
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}')"
elif [ "$(command -v lsb_release 2>/dev/null)" ]&&[ "${distro_info}" == "lsb_release" ]; then
if [ -z "${distroname}" ];then
distroname=$(lsb_release -sd)
distroname="$(lsb_release -sd)"
elif [ -z "${distroversion}" ]; then
distroversion=$(lsb_release -sr)
distroversion="$(lsb_release -sr)"
elif [ -z "${distroid}" ]; then
distroid=$(lsb_release -si)
distroid="$(lsb_release -si)"
elif [ -z "${distrocodename}" ]; then
distrocodename=$(lsb_release -sc)
distrocodename="$(lsb_release -sc)"
fi
elif [ "$(command -v hostnamectl 2>/dev/null)" ]&&[ "${distro_info}" == "hostnamectl" ]; 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
elif [ -f "/etc/debian_version" ]&&[ "${distro_info}" == "debian_version" ]; then
if [ -z "${distroname}" ]; then
distroname="Debian $(cat /etc/debian_version)"
elif [ -z "${distroversion}" ]; then
distroversion=$(cat /etc/debian_version)
distroversion="$(cat /etc/debian_version)"
elif [ -z "${distroid}" ]; then
distroid="debian"
fi
elif [ -f "/etc/redhat-release" ]&&[ "${distro_info}" == "redhat-release" ]; then
if [ -z "${distroname}" ]; then
distroname=$(cat /etc/redhat-release)
distroname="$(cat /etc/redhat-release)"
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
distroid=$(awk '{print $1}' /etc/redhat-release)
distroid="$(awk '{print $1}' /etc/redhat-release)"
fi
fi
done
## Glibc version
# e.g: 1.17
glibcversion=$(ldd --version | sed -n '1s/.* //p')
glibcversion="$(ldd --version | sed -n '1s/.* //p')"
## tmux version
# e.g: tmux 1.6
@ -84,34 +84,38 @@ else
if [ "${tmuxvdigit}" -lt "16" ]; then
tmuxv="$(tmux -V) (>= 1.6 required for console log)"
else
tmuxv=$(tmux -V)
tmuxv="$(tmux -V)"
fi
fi
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
## Uptime
uptime=$(</proc/uptime)
uptime="$(</proc/uptime)"
uptime=${uptime/[. ]*/}
minutes=$(( uptime/60%60 ))
hours=$(( uptime/60/60%24 ))
days=$(( uptime/60/60/24 ))
minutes="$(( uptime/60%60 ))"
hours="$(( uptime/60/60%24 ))"
days="$(( uptime/60/60/24 ))"
### Performance information
## Average server load
load=$(uptime|awk -F 'load average: ' '{ print $2 }')
load="$(uptime|awk -F 'load average: ' '{ print $2 }')"
## CPU information
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)
cpufreqency=$(awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /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)"
cpufreqency="$(awk -F: '/cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')"
# CPU usage of the game server pid
if [ -n "${gameserverpid}" ]; then
cpuused=$(ps --forest -o pcpu -g "${gameserverpid}"|awk '{s+=$1} END {print s}')
cpuusedmhz=$(echo "${cpufreqency} * ${cpuused} / 100" | bc )
cpuused="$(ps --forest -o pcpu -g "${gameserverpid}"|awk '{s+=$1} END {print s}')"
cpuusedmhz="$(echo "${cpufreqency} * ${cpuused} / 100" | bc)"
fi
## Memory information
@ -122,86 +126,86 @@ if [ "$(command -v numfmt 2>/dev/null)" ]; then
# Issue #2005 - Kernel 3.14+ contains MemAvailable which should be used. All others will be calculated.
# get the raw KB values of these fields.
physmemtotalkb=$(grep MemTotal /proc/meminfo | awk '{print $2}')
physmemfreekb=$(grep ^MemFree /proc/meminfo | awk '{print $2}')
physmembufferskb=$(grep ^Buffers /proc/meminfo | awk '{print $2}')
physmemcachedkb=$(grep ^Cached /proc/meminfo | awk '{print $2}')
physmemreclaimablekb=$(grep ^SReclaimable /proc/meminfo | awk '{print $2}')
physmemtotalkb="$(grep MemTotal /proc/meminfo | awk '{print $2}')"
physmemfreekb="$(grep ^MemFree /proc/meminfo | awk '{print $2}')"
physmembufferskb="$(grep ^Buffers /proc/meminfo | awk '{print $2}')"
physmemcachedkb="$(grep ^Cached /proc/meminfo | awk '{print $2}')"
physmemreclaimablekb="$(grep ^SReclaimable /proc/meminfo | awk '{print $2}')"
# check if MemAvailable Exists.
if grep -q ^MemAvailable /proc/meminfo; then
physmemactualfreekb=$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')
physmemactualfreekb="$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')"
else
physmemactualfreekb=$((physmemfreekb+physmembufferskb+physmemcachedkb))
physmemactualfreekb="$((physmemfreekb+physmembufferskb+physmemcachedkb))"
fi
# Available RAM and swap.
physmemtotalmb=$((physmemtotalkb/1024))
physmemtotal=$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}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")
physmemavailable=$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}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")
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")
physmemtotalmb="$((physmemtotalkb/1024))"
physmemtotal="$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}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")"
physmemavailable="$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}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")"
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")"
# RAM usage of the game server pid
# MB
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
else
# Older distros will need to use free.
# Older distros will need to use free.
# Older versions of free do not support -h option.
if [ "$(free -h > /dev/null 2>&1; echo $?)" -ne "0" ]; then
humanreadable="-m"
else
humanreadable="-h"
fi
physmemtotalmb=$(free -m | awk '/Mem:/ {print $2}')
physmemtotal=$(free ${humanreadable} | awk '/Mem:/ {print $2}')
physmemfree=$(free ${humanreadable} | awk '/Mem:/ {print $4}')
physmemused=$(free ${humanreadable} | awk '/Mem:/ {print $3}')
physmemtotalmb="$(free -m | awk '/Mem:/ {print $2}')"
physmemtotal="$(free ${humanreadable} | awk '/Mem:/ {print $2}')"
physmemfree="$(free ${humanreadable} | awk '/Mem:/ {print $4}')"
physmemused="$(free ${humanreadable} | awk '/Mem:/ {print $3}')"
oldfree=$(free ${humanreadable} | awk '/cache:/')
oldfree="$(free ${humanreadable} | awk '/cache:/')"
if [ "${oldfree}" ]; then
physmemavailable="n/a"
physmemcached="n/a"
else
physmemavailable=$(free ${humanreadable} | awk '/Mem:/ {print $7}')
physmemcached=$(free ${humanreadable} | awk '/Mem:/ {print $6}')
physmemavailable="$(free ${humanreadable} | awk '/Mem:/ {print $7}')"
physmemcached="$(free ${humanreadable} | awk '/Mem:/ {print $6}')"
fi
swaptotal=$(free ${humanreadable} | awk '/Swap:/ {print $2}')
swapused=$(free ${humanreadable} | awk '/Swap:/ {print $3}')
swapfree=$(free ${humanreadable} | awk '/Swap:/ {print $4}')
swaptotal="$(free ${humanreadable} | awk '/Swap:/ {print $2}')"
swapused="$(free ${humanreadable} | awk '/Swap:/ {print $3}')"
swapfree="$(free ${humanreadable} | awk '/Swap:/ {print $4}')"
fi
### Disk information
## Available disk space on the partition.
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}')
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}')
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}')"
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}')"
## 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
rootdirdu="0M"
fi
## 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
serverfilesdu="0M"
fi
## 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
rootdirduexbackup="0M"
fi
@ -209,7 +213,7 @@ fi
## Backup info
if [ -d "${backupdir}" ]; then
# 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 [ -z "${backupdirdu}" ]; then
backupdirdu="0M"
@ -221,25 +225,25 @@ if [ -d "${backupdir}" ]; then
# If there are backups in backup dir.
if [ "$(find "${backupdir}" -name "*.tar.gz" | wc -l)" -ne "0" ]; then
# number of backups.
backupcount=$(find "${backupdir}"/*.tar.gz | wc -l)
backupcount="$(find "${backupdir}"/*.tar.gz | wc -l)"
# most recent backup.
lastbackup=$(ls -1t "${backupdir}"/*.tar.gz | head -1)
lastbackup="$(ls -1t "${backupdir}"/*.tar.gz | head -1)"
# date of most recent backup.
lastbackupdate=$(date -r "${lastbackup}")
lastbackupdate="$(date -r "${lastbackup}")"
# 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.
lastbackupsize=$(du -h "${lastbackup}" | awk '{print $1}')
lastbackupsize="$(du -h "${lastbackup}" | awk '{print $1}')"
fi
fi
# Network Interface name
netint=$(ip -o addr | grep "${ip}" | awk '{print $2}')
netlink=$(ethtool "${netint}" 2>/dev/null| grep Speed | awk '{print $2}')
netint="$(ip -o addr | grep "${ip}" | awk '{print $2}')"
netlink="$(ethtool "${netint}" 2>/dev/null| grep Speed | awk '{print $2}')"
# External IP address
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=$?
# Should ifconfig.co return an error will use last known IP.
if [ ${exitcode} -eq 0 ]; then
@ -247,14 +251,14 @@ if [ -z "${extip}" ]; then
echo -e "${extip}" > "${tmpdir}/extip.txt"
else
if [ -f "${tmpdir}/extip.txt" ]; then
extip=$(cat "${tmpdir}/extip.txt")
extip="$(cat "${tmpdir}/extip.txt")"
else
fn_print_error_nl "Unable to get external IP"
fi
fi
else
if [ -f "${tmpdir}/extip.txt" ]; then
extip=$(cat "${tmpdir}/extip.txt")
extip="$(cat "${tmpdir}/extip.txt")"
else
fn_print_error_nl "Unable to get external IP"
fi
@ -271,8 +275,7 @@ else
fi
# Steam Master Server - checks if detected by master server.
if [ "${masterserverbypass}" == "1" ]; then
masterserverbypass=1
if [ -z "${displaymasterserver}" ]; then
if [ "$(command -v jq 2>/dev/null)" ]; then
if [ "${ip}" ]&&[ "${port}" ]; then
if [ "${steammaster}" == "true" ]||[ "${commandname}" == "DEV-QUERY-RAW" ]; then

Loading…
Cancel
Save