zoukankan      html  css  js  c++  java
  • Shell 脚本实现 Linux 系统监控

    包含各种不同参数的 Shell 脚本,用来获取和监控 Linux 系统信息和资源使用率获取。

    #! /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
    Designed by Tecmint.com
    Released 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 "
    " ' ' | 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 "
    " ' '| sed s/VERSION.*//`
            REV=`cat /etc/SuSE-release | tr "
    " ' ' | 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 "
    " ' ' | 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))
    # shift命令用于对参数的移动(左移)。可以查看http://blog.csdn.net/zhu_xun/article/details/24796235
    #

  • 相关阅读:
    spring cloud 和 阿里微服务spring cloud Alibaba
    为WPF中的ContentControl设置背景色
    java RSA 解密
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    Hystrix 配置参数全解析
    spring cloud 2020 gateway 报错503
    Spring Boot 配置 Quartz 定时任务
    Mybatis 整合 ehcache缓存
    Springboot 整合阿里数据库连接池 druid
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
  • 原文地址:https://www.cnblogs.com/fungitive/p/9136190.html
Copyright © 2011-2022 走看看