Shell功能
脚本获取域名的IP地址
自动检测公网IP地址并更新到公云PubYun
获取公网IP地址的多种方式
深入理解 Bash 中的管道与子 Shell:防止常见陷阱
CentOS和Ubuntu的Shell兼容点
主机之间ping命令检测
脚本匹配ip地址正则表达式
CentOS 7.x系统三级等保规范脚本
Shell数值计算的几种方法
脚本单实例运行的进程锁
主机通过客户端实时上传本地文件到对象存储
执行命令前关闭history记录
Bash中的变量声明与处理
sed:使用正则匹配IP地址
sed: 匹配并在中间位置插入字符
Find排除多个目录并按多个后缀查找文件
Linux主机巡检脚本
增加CPU使用率到指定范围
本文档使用 MrDoc 发布
-
+
home page
Linux主机巡检脚本
# 脚本源码 ```shell #!/bin/bash time_day=`date +%Y-%m-%d_%H:%M:%S` time_cront=`date +%Y%m%d%H%M%S` time_cront_day=`date +%Y%m%d` time_file=`date +%Y-%m-%d` system_hostname=$(hostname | awk '{print $1}') #获取服务器IP system_ip=$(hostname -I| awk '{print $1}') #获取总内存 mem_total=$(free -m | grep Mem| awk -F " " '{print $2}') #获取剩余内存 mem_free=$(free -m | grep "Mem" | awk '{print $4}') #获取已用内存 mem_use=$(free -m | grep Mem| awk -F " " '{print $2-$4-$6}') #系统进程数 load_1=`ps -ef |wc -l` #僵尸进程数 load_5=`top -b -n 1 |grep Tasks |awk '{print $10}'` #CPU空闲id load_15=`top -b -n 1 |grep Cpu |awk -F',' '{print $4}' |awk -F'id' '{print $1}'|sed 's/ //g'|awk -F. '{print $1}'` if [[ $((100-$load_15)) -gt 60 ]];then load_15_status=False else load_15_status=OK fi #过滤磁盘使用率大于60%目录,并加入描述 #disk_1=$(df -Ph | awk '{if(+$5>15) print "分区:"$6,"总空间:"$2,"使用空间:"$3,"剩余空间:"$4,"磁盘使用率:"$5}') disk_most=$(df -P | awk '{if(+$5>0) print $2,$6,$1}'|grep -Ev "sr0|docker"|sort -nr|awk '{print $2}'|head -1) disk_f=$(df -Ph|grep "$disk_most"$ | awk '{if(+$5>0) print $6}') disk_total=$(df -Ph|grep "$disk_most"$ | awk '{if(+$5>0) print $2}') disk_free=$(df -Ph|grep "$disk_most"$ | awk '{if(+$5>0) print $4}') disk_per=$(df -Ph|grep "$disk_most"$ | awk '{if(+$5>0) print $5}') disk_ux=$(df -P | awk '{if(+$5>0) print $5,$1}'|grep -Ev "sr0|docker"|sort -nr|awk -F"%" '{print $1}'|head -1) if [[ $disk_ux -gt 60 ]] then #分区 disk_f_60=$(df -P | awk '{if(+$5>0) print $5,$1,$6}'|grep -Ev "sr0|docker"|sort -nr|awk '{print $3}'|head -1) #磁盘使用率 disk_per_60=$(df -P | awk '{if(+$5>0) print $5,$1,$6}'|grep -Ev "sr0|docker"|sort -nr|awk '{print $1}'|head -1) disk_status=False else #分区 disk_f_60=NULL #磁盘使用率 disk_per_60=NULL disk_status=OK fi #文件路径 CHECK_HOME="$(cd "`dirname "$0"`"; pwd)" path="$CHECK_HOME"/monitor_system_check_"$time_file".txt #内存阈值 mem_mo='70' PERCENT=$(printf "%d%%" $(($mem_use*100/$mem_total))) PERCENT_1=$(echo $PERCENT|sed 's/%//g') if [[ $PERCENT_1 -gt $mem_mo ]] then mem_status_total="$mem_total"MB mem_status_use="$mem_use"MB mem_status_per=$PERCENT mem_status=False else mem_status_total="$mem_total"MB mem_status_use=$"$mem_use"MB mem_status_per=$PERCENT mem_status=OK fi # 空密码用户 null_user=$(for i in `cat /etc/shadow|grep '!!'|awk -F: '{print $1}'`;do cat /etc/passwd|grep "$i"|grep bash;done|awk -F: '{print $1}'|tr '\n' ' ') if [[ $null_user != '' ]]; then null_user_status=False else null_user_status=OK fi # 登陆失败用户 fail_user=`cat /var/log/secure|grep -Ei 'authentication failure'|wc -l` if [[ $fail_user > 0 ]]; then fail_user_status=False else fail_user_status=OK fi echo -e "\n------ $time_day ------\n\n服务器IP\t: $system_ip\n系统进程数\t: $load_1\n僵尸进程数\t: $load_5\n空密码用户\t: $null_user\n异常登陆数\t: $fail_user\n总内存大小\t: $mem_status_total\n已用内存\t: $mem_status_use\n分区信息\t: $disk_f\n数据盘总空间\t: $disk_total\n数据盘剩余\t: $disk_free\n磁盘超60分区\t: $disk_f_60\nCPU空闲率\t: ${load_15}%\n内存使用率\t: $mem_status_per\n数据盘使用率\t: $disk_per\n磁盘超60使用率\t: $disk_per_60\n\n==> statistics <==\n处理器状态\t: $load_15_status\n内存状态\t: $mem_status\n磁盘状态\t: $disk_status\n用户状态\t: $null_user_status\n登陆状态\t: $fail_user_status" #rm -f $(dirname $(readlink -f "$0"))/$0 ``` 运行指令:`bash <(curl -sL https://fsou.pro/media/attachment/2023/01/system_check.sh)` 附件地址:[【附件】system_check.sh](/media/attachment/2023/01/system_check.sh)
Nathan
Jan. 11, 2023, 2:49 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
PDF文件
Docx文件
share
link
type
password
Update password