主机信息监控脚本

主机监控脚本

主机监控的信息

  1. 系统信息
    uname -a
  2. 网络信息
  3. 系统基本信息
    top
    w
    who
    uptime
  4. 进程
    ps
    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
    #! /bin/bash
    # unset any variable which system may be using
    # clear the screen
    ## 处理参数
    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
    # Define Variable tecreset
    tecreset=$(tput sgr0)
    # Check if connected to Internet or not
    ping -c 1 www.baidu.com &> /dev/null && echo -e '\E[32m'"Internet: $tecreset Connected" || echo -e '\E[32m'"Internet: $tecreset Disconnected"
    # Check OS Type
    os=$(uname -o)
    echo -e '\E[32m'"Operating System Type :" $tecreset $os
    # Check OS Release Version and Name
    ###################################
    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
    ##################################
    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 > /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
    ##Process system
    echo -e '\E[32m'"Process system :" $tecreset
    echo -e '\E[32m'"CPU share of the top 10:" $tecreset
    ps -axo user,pid,%cpu,%mem,comm --sort -%cpu,-%mem| head -11
    unset tecreset os architecture kernelrelease internalip externalip nameserver loadaverage
    rm /tmp/who /tmp/ramcache /tmp/diskusage
    fi
    shift $(($OPTIND -1))
    #