这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# TECMINT_MONITOR

A Shell Script to Monitor Network, Disk Usage, Uptime, Load Average and RAM
usage in Linux.

# USAGE
## USAGE

Script execution without parameter prints system health infomration.

Expand All @@ -29,15 +30,14 @@ You can check some basics informations about the script by executing :
$ bash tecmint_monitor -v
```

# BUG AND REPORT
## BUG AND REPORT

Please report to us on [tecmint website](http://www.tecmint.com/linux-server-health-monitoring-script/).


# LICENSE
## LICENSE

Released under APACHE v2 (please check the LICENSE file for further informations)

Originally published on http://www.tecmint.com
Originally published on <http://www.tecmint.com>

The original author allowed to upload the script to Github and further develop it.
114 changes: 58 additions & 56 deletions tecmint_monitor.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ then
{
wd=$(pwd)
basename "$(test -L "$0" && readlink "$0" || echo "$0")" > /tmp/scriptname
scriptname=$(echo -e -n $wd/ && cat /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"
exit
}
Expand All @@ -46,11 +46,11 @@ exit
fi

#functions
GetVersionFromFile()
GetFileContentSanitized()
{
VERSION=`cat $1 | tr "\n" ' ' | sed s/.*VERSION.*=\ // `
return tr "\n" ' ' < "$1"
}
remove_files()
removeFiles()
{
# Remove Temporary Files
rm /tmp/who /tmp/ramcache /tmp/diskusage
Expand All @@ -69,40 +69,40 @@ if [[ $USEDIG == "1" ]]; then
else
externalip=$(curl -s ipecho.net/plain;echo)
fi
nameservers=$(cat /etc/resolv.conf | grep -v ^\# | awk '{print $2}')
nameservers=$(grep -v ^\# /etc/resolv.conf | awk '{print $2}')
loadaverage=$((top -n 1 -b 2>/dev/null || (echo q | top)) | grep -i "load average:" | awk -F'average:' '{print $2}'| awk '{print $1" "$2" "$3}')
tecuptime=$(uptime | awk '{print $3,$4}' | cut -f1 -d,)
OS=`uname -s`
REV=`uname -r`
MACH=`uname -m`
OS=$(uname -s)
REV=$(uname -r)
MACH=$(uname -m)
if [ "${OS}" = "SunOS" ] ; then
OS=Solaris
ARCH=`uname -p`
OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
ARCH=$(uname -p)
OSSTR="${OS} ${REV}(${ARCH} $(uname -v))"
elif [ "${OS}" = "AIX" ] ; then
OSSTR="${OS} `oslevel` (`oslevel -r`)"
OSSTR="${OS} $(oslevel) ($(oslevel -r))"
elif [ "${OS}" = "Linux" ] ; then
KERNEL=`uname -r`
KERNEL=$(uname -r)
PSUEDONAME=""
REV=""
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/\ .*//` "
PSUEDONAME="$(sed s/.*\(// /etc/redhat-release | sed s/\)//) "
REV="$(sed s/.*release\ // /etc/redhat-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/.*=\ //`
DIST=$(GetFileContentSanitized /etc/SuSE-release | sed s/VERSION.*//)
REV=$(GetFileContentSanitized /etc/SuSE-release | 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/\ .*//` "
PSUEDONAME="$(sed s/.*\(// /etc/mandrake-release | sed s/\)//) "
REV="$(sed s/.*release\ // /etc/mandrake-release | sed s/\ .*//) "
elif [ -f /etc/os-release ]; then
DIST=`awk -F "PRETTY_NAME=" '{print $2}' /etc/os-release | tr -d '\n"'`
DIST=$(awk -F "PRETTY_NAME=" '{print $2}' /etc/os-release | tr -d '\n"')
elif [ -f /etc/debian_version ] ; then
DIST="Debian `cat /etc/debian_version`"
DIST="Debian $(cat /etc/debian_version)"
fi
if [ -f /etc/UnitedLinux-release ] ; then
DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
DIST="${DIST}[$(GetFileContentSanitized /etc/UnitedLinux-release | sed s/VERSION.*//)]"
fi
OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME}${KERNEL} ${MACH})"
fi
Expand All @@ -114,26 +114,26 @@ if [[ $opt == "j" ]]
then
{
echo -n "{"
echo -n "\"internet\":$(echo $internet | jq -R '.'),"
echo -n "\"os_type\":$(echo $os | jq -R '.'),"
echo -n "\"os_version\":$(echo $OSSTR | jq -R '.'),"
echo -n "\"architecture\":$(echo $architecture | jq -R '.'),"
echo -n "\"kernel_release\":$(echo $kernelrelease | jq -R '.'),"
echo -n "\"hostname\":$(echo $hostname | jq -R '.'),"
echo -n "\"ip_internal\":$(echo $internalip | jq -R -c 'split(" ")'),"
echo -n "\"ip_external\":$(echo $externalip | jq -R -c 'split(" ")'),"
echo -n "\"name_servers\":$(echo $nameservers | jq -R -c 'split(" ")'),"
if [[ $SKIPWHO != "1" ]];then
echo -n "\"logged_in_users\":$(cat /tmp/who | tr "()" " " | sed 's/ \+/ /g' | sed 's/ $//g' | jq -R -c 'split(" ")' | jq -s -c '.'),"
echo -n "\"internet\":$(echo "$internet" | jq -R '.'),"
echo -n "\"os_type\":$(echo "$os" | jq -R '.'),"
echo -n "\"os_version\":$(echo "$OSSTR" | jq -R '.'),"
echo -n "\"architecture\":$(echo "$architecture" | jq -R '.'),"
echo -n "\"kernel_release\":$(echo "$kernelrelease" | jq -R '.'),"
echo -n "\"hostname\":$(echo "$hostname" | jq -R '.'),"
echo -n "\"ip_internal\":$(echo "$internalip" | jq -R -c 'split(" ")'),"
echo -n "\"ip_external\":$(echo "$externalip" | jq -R -c 'split(" ")'),"
echo -n "\"name_servers\":$(echo "$nameservers" | jq -R -c 'split(" ")'),"
if [[ "$SKIPWHO" != "1" ]];then
echo -n "\"logged_in_users\":$(tr "()" " " < /tmp/who | sed 's/ \+/ /g' | sed 's/ $//g' | jq -R -c 'split(" ")' | jq -s -c '.'),"
fi
echo -n "\"memory\":$(cat /tmp/ramcache | grep "Mem" | awk '{$1="";print $0}' | xargs | jq -R -c 'split(" ")'),"
echo -n "\"swap\":$(cat /tmp/ramcache | grep "Swap" | awk '{$1="";print $0}' | xargs | jq -R -c 'split(" ")'),"
echo -n "\"memory\":$(grep "Mem" /tmp/ramcache | awk '{$1="";print $0}' | xargs | jq -R -c 'split(" ")'),"
echo -n "\"swap\":$(grep "Swap" /tmp/ramcache | awk '{$1="";print $0}' | xargs | jq -R -c 'split(" ")'),"
echo -n "\"disk\":$(tail -n +2 /tmp/diskusage | sed 's/ \+/ /g' | jq -R -c 'split(" ")' | jq -s -c '.'),"
echo -n "\"load\":$(echo $loadaverage | jq -R -c 'split(", ")'),"
echo -n "\"uptime\":$(echo $tecuptime | jq -R '.')"
echo -n "\"load\":$(echo "$loadaverage" | jq -R -c 'split(", ")'),"
echo -n "\"uptime\":$(echo "$tecuptime" | jq -R '.')"
echo -n "}"
echo
remove_files
removeFiles
exit
}
fi
Expand All @@ -147,57 +147,59 @@ then
tecreset=$(tput sgr0 2>/dev/null || echo -e '\E[0m')

# Check if connected to Internet or not
echo -e '\E[32m'"Internet :" $tecreset $internet
echo -e '\E[32m'"Internet :" "$tecreset" "$internet"

# Check OS Type
echo -e '\E[32m'"Operating System Type :" $tecreset $os
echo -e '\E[32m'"Operating System Type :" "$tecreset" "$os"

#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
echo -e '\E[32m'"OS Version :" "$tecreset" "$OSSTR"
# Check Architecture
echo -e '\E[32m'"Architecture :" $tecreset $architecture
echo -e '\E[32m'"Architecture :" "$tecreset" "$architecture"

# Check Kernel Release
echo -e '\E[32m'"Kernel Release :" $tecreset $kernelrelease
echo -e '\E[32m'"Kernel Release :" "$tecreset" "$kernelrelease"

# Check hostname
echo -e '\E[32m'"Hostname :" $tecreset $hostname
echo -e '\E[32m'"Hostname :" "$tecreset" "$hostname"

# Check Internal IP
echo -e '\E[32m'"Internal IP :" $tecreset $internalip
echo -e '\E[32m'"Internal IP :" "$tecreset" "$internalip"

# Check External IP
echo -e '\E[32m'"External IP : $tecreset "$externalip
echo -e '\E[32m'"External IP :" "$tecreset" "$externalip"

# Check DNS
echo -e '\E[32m'"Name Servers :" $tecreset $nameservers
echo -e '\E[32m'"Name Servers :" "$tecreset" "$nameservers"

if [[ $SKIPWHO != "1" ]];then
# Check Logged In Users
echo -e '\E[32m'"Logged In users :" $tecreset && cat /tmp/who
echo -e '\E[32m'"Logged In users :" "$tecreset" && cat /tmp/who
fi

# Check RAM and SWAP Usages
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" | awk -F'shared' '{print $1}'
echo -e '\E[32m'"Ram Usages :" "$tecreset"
grep -v "Swap" /tmp/ramcache
echo -e '\E[32m'"Swap Usages :" "$tecreset"
grep -v "Mem" /tmp/ramcache | awk -F'shared' '{print $1}'

# Check Disk Usages
echo -e '\E[32m'"Disk Usages :" $tecreset
echo -e '\E[32m'"Disk Usages :" "$tecreset"
cat /tmp/diskusage

# Check Load Average
echo -e '\E[32m'"Load Average :" $tecreset $loadaverage
echo -e '\E[32m'"Load Average :" "$tecreset" "$loadaverage"

# Check System Uptime
echo -e '\E[32m'"System Uptime Days/(HH:MM) :" $tecreset $tecuptime
echo -e '\E[32m'"System Uptime Days/(HH:MM) :" "$tecreset" "$tecuptime"

# Unset Variables
unset tecreset os architecture kernelrelease internalip externalip nameserver loadaverage
remove_files
removeFiles
}
fi
shift $(($OPTIND -1))
if (( OPTIND > 1 )); then
shift $((OPTIND - 1))
fi