shell脚本日常机房巡检

#!/bin/bash
###系统信息#########
os_system(){
     
    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 +%F_%T)
    echo "服务器当前运行时间:${os_time}"
    os_last_reboot=$(uptime |awk '{print $3}'|awk -F ',' '{print $1}')
    echo "服务器最后重启时间:${os_last_reboot}"
    os_hostname=$(hostname)
    echo "服务器主机名称:${os_hostname}"
}
####网络信息#################
os_network(){
     
    ip_addr=$(ifconfig |awk '/broadcast/{print $2}')
    echo "服务器的ip地址:${ip_addr}"
    ping -c3 www.baidu.com >/dev/null
    if [ $? -eq 0 ]; then
        echo "服务器的网络正常"
    else
        echo "服务器的网络异常"
    fi
    #流入的量
    RX=$(ifconfig ens33|grep RX|head -n1|awk '{print $5/1024/1024}')
    #流出的量
    TX=$(ifconfig ens33|grep TX|head -n1|awk '{print $5/1024/1024}')
}
########硬件信息#######
cpu_info(){
     
    #cpu
    cpu_num=$(cat /proc/cpuinfo |grep "physical id"|sort |uniq |wc -l)
    echo "cpu个数:${cpu_num}"
    cpu_core=$(cat /proc/cpuinfo |grep "cores"|sort |uniq |awk -F ':' '{print $2}')
    echo "cpu核心数:${cpu_core}"
    cpu_model=$(cat /proc/cpuinfo |grep "model name"|sort |uniq |awk -F ':' '{print $2}')
    echo "cpu型号:${cpu_model}"
}
mem_info(){
     
    #总内存大小
    mem_total=`free -m | sed -n '2p' |awk '{print $2}'`
    #已使用内存
    mem_used=`free -m | sed -n '2p' |awk '{print $3}'`
    #剩余内存
    mem_free=`free -m |sed -n '2p' |awk '{print $4}'`
      
    #使用内存百分比
    Percent_mem_used=`echo "scale=2; $mem_used / $mem_total *100" | bc`
    #剩余内存百分比
    Percent_mem_free=`echo "scale=2; $mem_free / $mem_total *100" | bc`
 
    echo  "目前内存使用率达到:${Percent_mem_used}%"
}
disk_info(){
     
    #磁盘
    ##统计磁盘IO 性能指标(tps,每秒读取的量,每秒写入的量)
    yum -y install sysstat
    iostat
    #-F '[ |%]+':+正则表达式  表示一个或多个,这里就表示一个或多个空格或%
    ##显示已用超过80%的文件系统
    #方法一:
    df -Th|awk -F '[ |%]+' 'NR>1 {if($6>80) print $1}'
    #方法二:
    df -Th|awk 'NR>1 {if ($6>80) print $1}'
 
    #磁盘总量
    disktotal=$(lsblk |awk '/disk/{print $4}')
    echo "磁盘总量为:${disktotal}"
     
    #剩余磁盘总量
    sum=0
        a=($(df -T |grep -v tmpfs|awk -F' ' '{print $5}' |sed '1d'))
        for i in ${a[@]}
        do
        let  sum=sum+$i
        done
        diskfree=$(($sum/1024/1024))
        echo "磁盘剩余总量为:${diskfree}GB"
}
 
##############安全信息########################
sec_info(){
     
    ##统计登录用户信息
    count_user=$(last|grep "still logged in"|awk '{print $1}'|sort |uniq)
    echo "登录用户信息:${count_user}"
##md5校验/etc/passwd
    [ -f /opt/pwd ] || md5sum /etc/passwd > /opt/pwd
    md5sum -c /opt/pwd >/dev/null
    if [ $? -eq 0 ]; then
        echo "file is ok"
    else
        echo "文件被篡改,please check !"
    fi
}
while :
do
    os_system
    os_network
    cpu_info
    mem_info
    disk_info
    sec_info
done

你可能感兴趣的:(巡检,linux)