1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 #! /bin/bash while getopts ivh name do case $name in i)iopt=1;; v)vopt=1;; h)hopt=1;; *)echo "Invalid arg";; esac done if [[ ! -z $iopt ]] then { wd=$(pwd) basename "$(test -L "$0" && readlink "$0" || echo "$0")" > /tmp/scriptname scriptname=$(echo -e -n $wd/ && cat /tmp/scriptname) su -c "cp $scriptname /usr/bin/monitor" root && echo "Congratulations! Script Installed, now run monitor Command" || echo "Installation failed" } fi if [[ ! -z $vopt ]] then { echo -e "tecmint_monitor version 0.1\nDesigned by Tecmint.com\nReleased Under Apache 2.0 License" } fi if [[ ! -z $hopt ]] then { echo -e " -i Install script" echo -e " -v Print version information and exit" echo -e " -h Print help (this information) and exit" } fi if [[ $# -eq 0 ]] then { clear unset tecreset os architecture kernelrelease internalip externalip nameserver loadaverage tecreset=$(tput sgr0) ping -c 1 www.baidu.com &> /dev/null && echo -e '\E[32m'"Internet: $tecreset Connected" || echo -e '\E[32m'"Internet: $tecreset Disconnected" os=$(uname -o) echo -e '\E[32m'"Operating System Type :" $tecreset $os ################################### OS=uname -s REV=uname -r MACH=uname -m GetVersionFromFile() { VERSION=cat $1 | tr "\n" ' ' | sed s/.*VERSION.*=\ // } if [ "${OS}" = "SunOS" ] ; then OS=Solaris ARCH=uname -p OSSTR="${OS} ${REV}(${ARCH} uname -v)" elif [ "${OS}" = "AIX" ] ; then OSSTR="${OS} oslevel (oslevel -r)" elif [ "${OS}" = "Linux" ] ; then KERNEL=uname -r if [ -f /etc/redhat-release ] ; then DIST='RedHat' PSUEDONAME=cat /etc/redhat-release | sed s/.*\(// | sed s/\)// REV=cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*// elif [ -f /etc/SuSE-release ] ; then DIST=cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*// REV=cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ // elif [ -f /etc/mandrake-release ] ; then DIST='Mandrake' PSUEDONAME=cat /etc/mandrake-release | sed s/.*\(// | sed s/\)// REV=cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*// elif [ -f /etc/debian_version ] ; then DIST="Debian cat /etc/debian_version" REV="" fi if ${OSSTR} [ -f /etc/UnitedLinux-release ] ; then DIST="${DIST}[cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//]" fi OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})" fi ################################## #cat /etc/os-release | grep 'NAME\|VERSION' | grep -v 'VERSION_ID' | grep -v 'PRETTY_NAME' > /tmp/osrelease #echo -n -e '\E[32m'"OS Name :" $tecreset && cat /tmp/osrelease | grep -v "VERSION" | grep -v CPE_NAME | cut -f2 -d\" #echo -n -e '\E[32m'"OS Version :" $tecreset && cat /tmp/osrelease | grep -v "NAME" | grep -v CT_VERSION | cut -f2 -d\" echo -e '\E[32m'"OS Version :" $tecreset $OSSTR architecture=$(uname -m) echo -e '\E[32m'"Architecture :" $tecreset $architecture kernelrelease=$(uname -r) echo -e '\E[32m'"Kernel Release :" $tecreset $kernelrelease echo -e '\E[32m'"Hostname :" $tecreset $HOSTNAME internalip=$(hostname -I) echo -e '\E[32m'"Internal IP :" $tecreset $internalip externalip=$(curl -s ipecho.net/plain;echo) echo -e '\E[32m'"External IP : $tecreset "$externalip nameservers=$(cat /etc/resolv.conf | sed '1 d' | awk '{print $2}') echo -e '\E[32m'"Name Servers :" $tecreset $nameservers who>/tmp/who echo -e '\E[32m'"Logged In users :" $tecreset && cat /tmp/who free -h | grep -v + > /tmp/ramcache echo -e '\E[32m'"Ram Usages :" $tecreset cat /tmp/ramcache | grep -v "Swap" echo -e '\E[32m'"Swap Usages :" $tecreset cat /tmp/ramcache | grep -v "Mem" df -h| grep 'Filesystem\|/dev/sda*' > /tmp/diskusage echo -e '\E[32m'"Disk Usages :" $tecreset cat /tmp/diskusage loadaverage=$(top -n 1 -b | grep "load average:" | awk '{print $10 $11 $12}') echo -e '\E[32m'"Load Average :" $tecreset $loadaverage tecuptime=$(uptime | awk '{print $3,$4}' | cut -f1 -d,) echo -e '\E[32m'"System Uptime Days/(HH:MM) :" $tecreset $tecuptime unset tecreset os architecture kernelrelease internalip externalip nameserver loadaverage rm /tmp/who /tmp/ramcache /tmp/diskusage } fi shift $(($OPTIND -1))
将次脚本命名为monitor,放到服务器的/usr/bin/下,授予执行+x权限
chmod o+x /usr/bin/monitor
然后直接执行monitor命令即可查看系统相关信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [root@localhost ~]# monitor Operating System Type : GNU/Linux OS Version : Linux RedHat 7.2(Maipo 3.10.0-327.el7.x86_64 x86_64) Architecture : x86_64 Kernel Release : 3.10.0-327.el7.x86_64 Hostname : localhost Internal IP : 1.1.1.1 Name Servers : *.*.com. 1.1.1.1 1.1.1.1 Logged In users : aq pts/0 2020-09-24 15:31 (172.30.1.199) Ram Usages : total used free shared buff/cache available Mem: 7.6G 638M 161M 397M 6.9G 6.4G Swap Usages : total used free shared buff/cache available Swap: 8.0G 3.4M 8.0G Disk Usages : Filesystem Size Used Avail Use% Mounted on /dev/vda1 99G 63G 31G 67% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 52K 3.9G 1% /dev/shm /dev/mapper/vg_data-lv_data 197G 3.2G 184G 2% /opt Port Usages : Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6509/haproxy tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 933/sshd: /usr/sbin tcp6 0 0 :::22 :::* LISTEN 933/sshd: /usr/sbin Load Average : loadaverage:0.12, System Uptime Days/(HH:MM) : 71 days