shell脚本完成企业级巡检自动化

2020-09-29 11:40发布

1.查看cpu的信息

cpu_info(){                             #定义的函数
    #cpu信息
    #cpu 型号
    cpu_model=$(cat /proc/cpuinfo |grep "model name"|uniq |awk -F ':' '{print $2}')     #uniq是去重
    echo "cpu的型号信息:${cpu_model}"
    #cpu的核心数
    cpu_core=$(cat /proc/cpuinfo |grep "core id"|uniq |wc -l)
    echo "cpu的核心数:${cpu_core}"
    #cpu的物理个数
    cpu_physical=$(cat /proc/cpuinfo |grep "physical id"|uniq |wc -l)
    echo "cpu的物理个数:${cpu_physical}"

}

2.查看内存信息

mem_info(){
    #mem信息
    #内存总量
    mem_total=$(free  -m|awk '/Mem/{print $2}')
    echo "内存总量:${mem_total}"
    #内存使用量
    mem_used=$(free  -m|awk '/Mem/{print $3}')
    echo "内存使用量: ${mem_used}"
    #内存剩余使用量
    mem_free=$(free -m |awk '/Mem/{print $4}')
    echo "内存剩余使用量: ${mem_free}"
    #内存使用率
    #内存使用率=$mem_used/$mem_total
    Percent_mem_used=$(echo "scale=2;${mem_used}/${mem_total}*100"|bc)   #scale是保留小数点后2位  bc是当计算器使用
    echo "内存使用率:${Percent_mem_used}%"    
    #剩余内存使用率
    #剩余内存使用率=$mem_free/$meme_total
    Percent_mem_free=$(echo "scale=2;${mem_free}/${mem_total}*100"|bc)
    echo "剩余内存使用率:${Percent_mem_free}%"
}

3.查看磁盘信息

disk_info(){
#磁盘信息
    #对磁盘读写进行监控,并输出结果
    yum -y install sysstat
    iostat
    #磁盘总量
    disk_total=$(lsblk |awk '/disk/{print $4}')
    echo "磁盘总量:${disk_total}"
    #磁盘剩余总量
    sum=0
        a=($(df -T |awk -F' ' '{print $5}' |sed '1d'))
        for i in ${a[@]}
        do
        let  sum=sum+$i
        done
        diskfree=$(($sum/1024/1024))
        echo "磁盘剩余总量为:${diskfree}GB"
    #对文件系统进行检查,查看使用率是否达到80%,并输出结果
    df -h|awk 'NR>1 {if ($5>80) print $1}'
}

4.查看网络信息

net_info(){
    #网络信息
    #获取主机ip
    net_addr=$(ifconfig ens33 | grep netmask | awk '{print $2}'})
    echo "主机ip地址为:${net_addr}"
    #能否ping通外网
    ping -c1 www.baidu.com >/dev/null
    if [ $? -eq 0 ]; then
        echo "net is ok"
    else
        echo "please check network !!"
    fi
    #统计网卡流量
    RX=$(ifconfig ens33|grep RX|head -n1|awk '{print $6}'|awk -F'(' '{print $2}')
    echo "网卡流入的量为:${RX}MB"
    TX=$(ifconfig ens33|grep TX|head -n1|awk '{print $6}'|awk -F'(' '{print $2}')
    echo "网卡流出的量为:${TX}MB"
}

6.查看系统信息

sys_info(){
    OS_TYPE=`uname`
    echo "    系统类型:$OS_TYPE"
    OS_VER=`cat /etc/redhat-release`
    echo "    系统版本:$OS_VER"
    OS_KER=`uname  -r`
    echo "    系统内核:$OS_KER"
    OS_TIME=`date`
    echo "    当前时间:$OS_TIME"
    OS_RUN_TIME=`uptime |awk '{print $3}'|awk -F ',' '{print $1}'`
    echo "    运行时间:$OS_RUN_TIME"
    OS_LAST_REBOOT_TIME=`who -b|awk '{print $2,$3}'`
    echo "最后重启时间:$OS_LAST_REBOOT_TIME"
    OS_HOSTNAME=`hostname`
    echo "本机名称:$OS_HOSTNAME"

}

7.安全信息

sec_info(){
    #安全信息
    #获取系统的环境变量
    #将环境变量的信息重定向到文件
    env >/opt/env
    #生成md5校验码
    md5sum /opt/env >/opt/env.db
    #检测md5值
    md5sum -c /opt/env.db
    if [ $? -eq 0 ]; then
        echo "ok"
    else
        echo "系统可用被黑了!!"
    fi
}

8.监听某服务是否正常运行(这里我们监听mysql)

service_info(){
    netstat  -lptnu|grep 3306
    if [ $? -eq 0 ]; then
        echo "mysql service is runing"
    else
        echo "please check mysql service"
    fi
}

9.检测某一网站是否能够正常访问

check_website(){
    
    #-I 仅测试HTTP头
    #-m 10 最多查询10s
    #-o /dev/null 屏蔽原有输出信息
    #-s silent 模式,不输出任何东西
    #-w %{http_code} 控制额外输出

    code=$(curl -I -m 10 -o /dev/null  -s  -w %{http_code} www.baidu.com)
    if [ $code -eq 200 ]; then
        echo "website is runing"
    else
        echo "please check website"
    fi
}

10.调用以上函数完成企业级巡检自动化

#函数调用
while :
do
    cpu_info
    mem_info
    disk_info
    net_info
    sys_info
    sec_info
    service_info
    check_website
    sleep 2         #间隔两秒
done

转载自:CSDN  作者:Hya、

原文链接:https://blog.csdn.net/yeyslspi59/article/details/106800670