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 "服务器的网络是ok的"
	else
		echo "check 服务器的网络"
	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
    ## 调用iptables drop掉统计访问前10的ip     for ip in $(cat /var/log/httpd/access_log |awk '{print $1}'|sort |uniq  -c|sort -nr|head -n10 |awk '{print $2}')
    do
        iptables -I INPUT -ptcp -s $ip -j DROP
    done
} while : do os_system os_network cpu_info mem_info disk_info sec_info done

 #已使用内存百分比

#剩余内存百分比

     #已使用内存百分比: ${mem_used}/${mem_total}
        percent_mem_used=$(free | awk '/Mem/{printf "%.2f\n",$3/$2*100}')
        echo "已使用内存百分比:${percent_mem_used}%"
        #剩余内存百分比 ${mem_free}/${mem_total}
        percent_mem_free=$(free|awk '/Mem/{printf "%.2f\n",$4/$2*100}')
        echo "剩余内存百分比:${percent_mem_free}%"