info_distro.sh 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #!/bin/bash
  2. # LinuxGSM info_distro.sh function
  3. # Author: Daniel Gibbs
  4. # Website: https://linuxgsm.com
  5. # Description: Variables providing useful info on the Operating System such as disk and performace info.
  6. # Used for command_details.sh, command_debug.sh and alert.sh.
  7. local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
  8. ### Distro information
  9. ## Distro
  10. # Returns architecture, kernel and distro/os.
  11. arch=$(uname -m)
  12. kernel=$(uname -r)
  13. # Distro name - Ubuntu 16.04
  14. # Distro Version - 16.04
  15. # Distro ID - ubuntu
  16. if [ -f "/etc/os-release" ]; then
  17. distroname=$(grep PRETTY_NAME /etc/os-release | sed 's/PRETTY_NAME=//g' | tr -d '="')
  18. distroversion=$(grep VERSION_ID /etc/os-release | sed 's/VERSION_ID=//g' | sed 's/\"//g')
  19. distroid=$(grep ID /etc/os-release | grep -v _ID | grep -v ID_ | sed 's/ID=//g')
  20. if [ -n "$(command -v lsb_release)" ]; then
  21. distroname="$(lsb_release -sd)"
  22. distroversion="$(lsb_release -sr)"
  23. distroid=$(lsb_release -sc)
  24. elif [ -f "/etc/debian_version" ]; then
  25. distroname="Debian $(cat /etc/debian_version)"
  26. distroversion="$(cat /etc/debian_version)"
  27. distroid="debian"
  28. elif [ -f "/etc/redhat-release" ]; then
  29. distroname=$(cat /etc/redhat-release)
  30. distroversion=$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|fedora" | cut -d"-" -f3)
  31. distroid="$(wk '{print $1;}' /etc/redhat-release)"
  32. fi
  33. ## Glibc version
  34. # e.g: 1.17
  35. glibcversion="$(ldd --version | sed -n '1s/.* //p')"
  36. ## tmux version
  37. # e.g: tmux 1.6
  38. if [ -z "$(command -V tmux 2>/dev/null)" ]; then
  39. tmuxv="${red}NOT INSTALLED!${default}"
  40. else
  41. if [ "$(tmux -V|sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]')" -lt "16" ] 2>/dev/null; then
  42. tmuxv="$(tmux -V) (>= 1.6 required for console log)"
  43. else
  44. tmuxv=$(tmux -V)
  45. fi
  46. fi
  47. ## Uptime
  48. uptime=$(</proc/uptime)
  49. uptime=${uptime/[. ]*/}
  50. minutes=$(( uptime/60%60 ))
  51. hours=$(( uptime/60/60%24 ))
  52. days=$(( uptime/60/60/24 ))
  53. ### Performance information
  54. ## Average server load
  55. load=$(uptime|awk -F 'load average: ' '{ print $2 }')
  56. ## Memory information
  57. # Available RAM and swap.
  58. # Older versions of free do not support -h option.
  59. if [ "$(free -h > /dev/null 2>&1; echo $?)" -ne "0" ]; then
  60. humanreadable="-m"
  61. else
  62. humanreadable="-h"
  63. fi
  64. physmemtotal=$(free ${humanreadable} | awk '/Mem:/ {print $2}')
  65. physmemtotalmb=$(free -m | awk '/Mem:/ {print $2}')
  66. physmemused=$(free ${humanreadable} | awk '/Mem:/ {print $3}')
  67. physmemfree=$(free ${humanreadable} | awk '/Mem:/ {print $4}')
  68. physmemavailable=$(free ${humanreadable} | awk '/Mem:/ {print $7}')
  69. physmemcached=$(free ${humanreadable} | awk '/cache:/ {print $4}')
  70. if [ -z "${physmemcached}" ]; then
  71. physmemcached=$(free ${humanreadable} | awk '/Mem:/ {print $6}')
  72. fi
  73. swaptotal=$(free ${humanreadable} | awk '/Swap:/ {print $2}')
  74. swapused=$(free ${humanreadable} | awk '/Swap:/ {print $3}')
  75. swapfree=$(free ${humanreadable} | awk '/Swap:/ {print $4}')
  76. ### Disk information
  77. ## Available disk space on the partition.
  78. filesystem=$(df -hP "${rootdir}" | grep -v "Filesystem" | awk '{print $1}')
  79. totalspace=$(df -hP "${rootdir}" | grep -v "Filesystem" | awk '{print $2}')
  80. usedspace=$(df -hP "${rootdir}" | grep -v "Filesystem" | awk '{print $3}')
  81. availspace=$(df -hP "${rootdir}" | grep -v "Filesystem" | awk '{print $4}')
  82. ## LinuxGSM used space total.
  83. rootdirdu=$(du -sh "${rootdir}" 2> /dev/null | awk '{print $1}')
  84. if [ -z "${rootdirdu}" ]; then
  85. rootdirdu="0M"
  86. fi
  87. ## LinuxGSM used space in serverfiles dir.
  88. serverfilesdu=$(du -sh "${serverfiles}" 2> /dev/null | awk '{print $1}')
  89. if [ -z "${serverfilesdu}" ]; then
  90. serverfilesdu="0M"
  91. fi
  92. ## LinuxGSM used space total minus backup dir.
  93. rootdirduexbackup=$(du -sh --exclude="${backupdir}" "${serverfiles}" 2> /dev/null | awk '{print $1}')
  94. if [ -z "${rootdirduexbackup}" ]; then
  95. rootdirduexbackup="0M"
  96. fi
  97. ## Backup info
  98. if [ -d "${backupdir}" ]; then
  99. # Used space in backups dir.
  100. backupdirdu=$(du -sh "${backupdir}" | awk '{print $1}')
  101. # If no backup dir, size is 0M
  102. if [ -z "${backupdirdu}" ]; then
  103. backupdirdu="0M"
  104. fi
  105. # number of backups set to 0 by default
  106. backupcount=0
  107. # If there are backups in backup dir.
  108. if [ $(find "${backupdir}" -name "*.tar.gz" | wc -l) -ne "0" ]; then
  109. # number of backups.
  110. backupcount=$(find "${backupdir}"/*.tar.gz | wc -l)
  111. # most recent backup.
  112. lastbackup=$(find "${backupdir}"/*.tar.gz | head -1)
  113. # date of most recent backup.
  114. lastbackupdate=$(date -r "${lastbackup}")
  115. # no of days since last backup.
  116. lastbackupdaysago=$(( ( $(date +'%s') - $(date -r "${lastbackup}" +'%s') )/60/60/24 ))
  117. # size of most recent backup.
  118. lastbackupsize=$(du -h "${lastbackup}" | awk '{print $1}')
  119. fi
  120. fi
  121. # External IP address
  122. if [ -z "${extip}" ]; then
  123. extip=$(${curlpath} -m 3 ifconfig.co > "${tmpdir}/extip.txt" 2>/dev/null)
  124. if [ $? -ne 0 ]; then
  125. if [ -f "${tmpdir}/extip.txt" ]; then
  126. echo "${tmpdir}/extip.txt"
  127. else
  128. echo "x.x.x.x"
  129. fi
  130. fi
  131. fi