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}%"