zoukankan      html  css  js  c++  java
  • Ansible:服务器巡检_2、Linux 服务器巡检脚本

    规划中平台是具备一定的通用性和可扩展性,所以在写脚本时引入了参数,以便实现代码的复用

    **1、Linux 基础信息巡检**点击查看代码
    sys_check(){
            echo "主机名称:`hostname`"
            #echo "操作系统:`cat /etc/*-release|awk 'END{print}'`"
            echo "操作系统:`cat /etc/*-release|awk 'END{print}'|cut -d = -f 2|sed                                                                                                                                                              's/"//g'`"
            echo "系统内核:`uname -r`"
            #echo "SELinux:`/usr/sbin/sestatus | grep 'SELinux status:' | awk '{pri                                                                                                                                                             nt $3}'`"
            echo "系统语言:`echo $LANG |awk -F "." '{print $1}'`"
            echo "系统编码:`echo $LANG |awk -F "." '{print $2}'`"
            echo "当前时间:`date +%F_%T`"
            echo "启动时间:`who -b | awk '{print $3,$4}'`"
            echo "运行时间:`uptime | awk '{print $3 " " $4}' | sed 's/,//g'`"
            }
    
    cpu_Info(){
            echo "CPU架构:`uname -m`"
            echo "CPU型号:`cat /proc/cpuinfo | grep "model name" | uniq|awk -F":" '                                                                                                                                                             {print $2}'`"
    #        echo "CPU数量:`cat /proc/cpuinfo | grep "physical id"|sort|uniq|wc -l`                                                                                                                                                              颗"
     #       echo "CPU核心:`cat /proc/cpuinfo | grep "cpu cores"|sort|uniq|awk -F "                                                                                                                                                             :" '{print $2}'` 核"
            echo "CPU线程:`cat /proc/cpuinfo | grep "processor" | awk '{print $3}'                                                                                                                                                              | sort | uniq | wc -l` 线程"
    
            }
    
    cpu_Check(){
            Check_Res=`sar -u 1 5 |grep Average`
            echo "CPU用户占比:`echo $Check_Res|awk '{printf $3}'`%"
            echo "CPU内核占比:`echo $Check_Res|awk '{printf $5}'`%"
            echo "ResCheck_CPURate:`echo $Check_Res|awk '{printf $3+$5}'`%"
            echo "CPU可用占比:`echo $Check_Res|awk '{printf $8}'`%"
            }
    
    
    mem_check(){
            free_total=`free -m | grep Mem|awk '{printf $2}'`
            free_used=`free -m | grep -v Swap|awk 'END{printf $3}'`
            #free_available=`free -m | grep Mem|awk '{printf $4}'`
            #used_baifen=`echo "scale=2;$free_used/$free_total*100"|bc`
            echo "内存合计:`free -g | awk "NR==2"| awk '{print $2}'` GB "
            echo "内存used:`free -g | grep -v Swap | awk 'END{print $3}'` GB"
            #echo "内存buff/cache:`free -g | awk "NR==2"| awk '{print $6}'` GB"
            #echo "内存使用:`free -m | awk "NR==2"| awk '{printf ("%.2f
    ", ($3+$6)                                                                                                                                                             /1024)}'` GB 占比 `echo "scale=2;$free_used/$free_total*100"|bc`%"
            echo "ResCheck_MemRate: `echo "scale=2;($free_used/$free_total)*100"|bc                                                                                                                                                             `%"
            # echo "内存使用:`free -mh | awk "NR==2"| awk '{print $3+$6}'` G占比 `e                                                                                                                                                             cho "scale=2;$free_used/$free_total*100"|bc`%"
            #echo "内存可用:`free -g | awk "NR==2"| awk '{print $4}'` GB 占比 `echo                                                                                                                                                              "scale=2;$free_available/$free_total*100"|bc`% "
            #echo "内存可用:`free -g | awk "NR==2"| awk '{print $4}'` GB 占比 `echo                                                                                                                                                              "scale=2;$free_available/$free_total*100"|bc`% "
            }
    
    disk_Check(){
    
            echo "`df -h | sort |grep -E "/sd|/mapper" |awk '{print "ResCheck_DiskRa                                                                                                                                                             te:分区" $1  ," 合 计"$2" 已用" $3 " 剩余"$4 " 使用占比 " $5}'`"
    
           # echo "`df -h | sort |grep /sd |awk '{print "ResCheck_DiskRate:分区" $1                                                                                                                                                               ," 合计"$2" 已用" $3 " 剩余"$4 " 使用占比 " $5}'`"
            }
    
    ip_Addr(){
    
            echo "`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6 |awk -F " "                                                                                                                                                              'BEGIN {count=0} {count=count+1; print "IP地址" count ":" $2}'`"
    }
    
    
    
    sys_check
    cpu_Info
    cpu_Check
    mem_check
    disk_Check
    ip_Addr
    

    执行效果如图:

    **2、服务器端口检查** 点击查看代码
    port_Check(){
    #        local service_port=50456
            service_port=$1
            Temp_S=`netstat -naut| grep -v tcp6 |grep "0.0.0.0:$service_port "`
            if [ -z "$Temp_S" ]; then
                    echo "ResCheck_Port:$service_port  Unknown"
            fi
    
            if [ -n "$Temp_S" ]; then
                    #echo `echo $Temp_S|awk '{  print "ResCheck_Port:" service_port " " $6}' service_port=$service_port `
                    echo "ResCheck_Port:$service_port  LISTEN"
            fi
    
    
    }
    port_Check $1
    
    

    效果图:

    **3、检查远程主机端口状态**点击查看代码
    [root@hfeboasmg01 script]# cat remotePort_check.sh
    remotePort_Check(){
    #        local service_port=50456
            Host=$1
            Port=$2
            #Temp_S=`netstat -naut| grep -v tcp6 |grep "0.0.0.0:$service_port "`
            #nc -z -v -w 5 $Host $Port &> /dev/null
            nc -z -v -w 5 $Host $Port
            res=$?
            #Do whatever you want
    
            if [ $res -eq 0 ]; then
                    echo ResCheck_remotePort: port $Port on $Host is open
            else
                    echo ResCheck_Port:port $Port on $Host is closed
            fi
            }
    remotePort_Check $1 $2
    
    
    效果图: ![](https://img2020.cnblogs.com/blog/1326813/202110/1326813-20211012190003265-2129476964.png) 备注:上图时一个错误示范,需要nc 的支持,但不影响说明。
    **4、服务状态检查**点击查看代码
    service_Check(){
            #返回服务状态
    
            service_name=$1
            #local service_name="sshd"
            echo `systemctl  status $service_name |grep Active |awk '{print "ResCheck_Service:" service_name " " $2}' service_name=$service_name`
            }
    
    
    service_Check $1
    ~
    
    
    效果图: ![](https://img2020.cnblogs.com/blog/1326813/202110/1326813-20211012190312285-294882904.png)
    **5、网站可用性检查** 点击查看代码
    url_Check(){
            #通过端口的返回值判断状态
    
            url_path=$1
    
            #local url_path="https://asts.cxmt.com:8080"
            #echo `curl -k -s --head $url_path |awk 'NR==1 {print "ResCheck_URL:" url_path " "$2$3}' url_path=$url_path`
            url_checkRes=`curl  --connect-timeout 3 -k -s --head $url_path`
            if [ "$url_checkRes" ]; then
                  echo `curl -k -s --head $url_path |awk 'NR==1 {print "ResCheck_URL:" url_path " "$2$3}' url_path=$url_path`
            else
                  echo "ResCheck_URL:$url_path  Unreachable "
            fi
            }
    
    url_Check $1
    
    
    效果图:

    至此,linux 平台的几个巡检脚本基本完成了

  • 相关阅读:
    [置顶] RGB颜色查询对照表
    3.3FactoryMethod——工厂方法
    从零开始学C++之数据封装与抽象:分别用C和C++来实现一个链栈
    C# 自定义事件
    Qt4--加密日记本(子例化QMainWindow文本加密解密)
    SharePoint PerformancePoint Service-PowerShell
    Windows下安装Eric5时出现的“Sorry, please install QtHelp.”问题解决办法
    Char* ,CString ,WCHAR*之间的转换
    [C++基础]关键词volatile
    备忘--简单比较SPSS、RapidMiner、KNIME以及Kettle四款数据分析工具
  • 原文地址:https://www.cnblogs.com/vmsky/p/15399126.html
Copyright © 2011-2022 走看看