Linux自动巡检脚本

该脚本适用于日常巡检,可根据需求自行增减内容

脚本内容

[root@localhost ~]# cat xunjian-v1.sh
#!/bin/bash
########################################################################################################
# @mail qujiayu98@163.com
# @author qujiayu
# @company_name 湖南麒麟信安科技股份有限公司
########################################################################################################
# @Scpript      该脚本用于系统日常巡检,仅供学习研究                                           #######################
########################################################################################################function RED(){echo -e "\033[31m$@\033[0m"
}function GRE(){echo -e "\033[36m$@\033[0m"
}function OS_INFO(){# 系统名local OS_NAME=`uname -n`# 系统版本local OS_VERSION=`cat /etc/.kyinfo | grep dist_id | grep -oE "Kylin.*" 2>/dev/null || echo 获取信息失败`# 系统类型local OS_TYPE=`uname`# 主机序列号local OS_NUM=`dmidecode -t system | grep 'Serial Number' | awk '{print $3}'`# 系统内核版本local OS_KERNEL=`uname -r`# 系统机器码local OS_CODE=""# 系统语言环境local OS_LANG=`echo $LANG`# 系统时间local OS_DATE=`date +"%Y-%m-%d %H:%M:%S"`# 系统运行时间local OS_UPTIME=`uptime | awk -F',' '{sub(/.*up /,"",$1);print $1'} || echo 获取信息失败`# 系统上次重启时间local OS_LAST_REBOOT=`last reboot | head -1 | awk '{print $5,$6,$7,$8,$10}'`# 系统上次关机时间local OS_LAST_SHUTDOWN=`last -x | grep shutdown | head -1 | awk '{print $5,$6,$7,$8,$10}'`RED "################################# [ 系统信息巡检区 ] ######################################"GRE "主机名:$OS_NAME"GRE "主机类型:$OS_TYPE"GRE "主机序列号:${OS_NUM:-获取信息失败}"GRE "系统版本:$OS_VERSION"GRE "系统内核版本:$OS_KERNEL"GRE "系统机器码:${OS_CODE:-获取信息失败}"GRE "系统语言环境:${OS_LANG}"GRE "系统时间;$OS_DATE"GRE "系统已运行时间:$OS_UPTIME"GRE "系统上次重启时间:${OS_LAST_REBOOT:-获取信息失败}"GRE "系统上次关机时间:${OS_LAST_SHUTDOWN:-获取信息失败}"
}function OS_HDWARE(){# CPU架构local CPU_ARCH=`uname -m`# CPU型号local CPU_TYPE=`cat /proc/cpuinfo | grep "model name" | uniq | awk -F':' '{sub(/ /,"",$2);print $2}'`# CPU个数local CPU_NUM=`cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l`# CPU 核数local CPU_CORE=`cat /proc/cpuinfo | grep cores | uniq | awk -F':' '{sub(/ /,"",$2);print $2}'`# CPU 频率local CPU_HZ=`cat /proc/cpuinfo | grep "cpu MHz" | uniq | awk -F':' '{sub(/ /,"",$2);printf "%s MHz\n",$2}'`# 内存容量local ME_SIZE=$(echo "scale=2;`cat /proc/meminfo | grep 'MemTotal:' | awk '{print $2}'`/1048576"|bc)# 空闲内存local ME_FREE=$(echo "scale=2;`cat /proc/meminfo | grep 'MemFree:' | awk '{print $2}'`/1048576"|bc)# 可用内存local ME_FREEE=$(echo "scale=2;`cat /proc/meminfo | grep 'MemAvailable:' | awk '{print $2}'`/1048576" | bc)# 内存使用率local ME_USE=$(awk 'BEGIN{printf "%.1f%\n",('$ME_SIZE'-'$ME_FREEE')/'$ME_SIZE'*100}')# SWAP大小local ME_SWAP_SIZE=$(echo "scale=2;`cat /proc/meminfo | grep 'SwapTotal:' | awk '{print $2}'`/1048576"|bc)# SWAP可用local ME_SWAP_FREE=$(echo "scale=2;`cat /proc/meminfo | grep 'SwapFree:' | awk '{print $2}'`/1048576"|bc)# SWAP使用率local ME_SWAP_USE=$(awk 'BEGIN{printf "%.1f%\n",('$ME_SWAP_SIZE'-'$ME_SWAP_FREE')/'$ME_SWAP_SIZE'*100}')# Buffer大小local ME_BUF=$(cat /proc/meminfo | grep 'Buffers:' | awk '{printf "%s KB",$2}')# 内存Cache大小local ME_CACHE=$(cat /proc/meminfo | grep '^Cached:' | awk '{printf "%s KB",$2}')# 当前系统所有网卡local NET_DEVICE=(`cat /proc/net/dev | awk 'NR>2 && $1 !~/lo/ {sub(/:/,"");print $1}'`)RED "################################# [ 系统硬件巡检区 ] ######################################"GRE "CPU型号:$CPU_TYPE"GRE "CPU架构:$CPU_ARCH"GRE "CPU个数:$CPU_NUM"GRE "CPU核数: $CPU_CORE"GRE "CPU频率:$CPU_HZ"GRE "内存容量:${ME_SIZE} GB"GRE "内存空闲:${ME_FREE} GB"GRE "内存可用:${ME_FREEE} GB"GRE "内存使用率:${ME_USE}"GRE "SWAP容量:$ME_SWAP_SIZE GB"GRE "SWAP可用容量:$ME_SWAP_FREE GB"GRE "SWAP使用率:$ME_SWAP_USE"GRE "内存Buffer大小:${ME_BUF}"GRE "内存Cache大小:${ME_CACHE}"for i in ${NET_DEVICE[@]}doGRE "网卡:$i  状态: $(ip link show ens33 | awk 'NR==1{print $9}') RX: $(ethtool -g ens33 | grep "RX:" | tail -1 | awk '{print $2}') TX: $(ethtool -g ens33 | grep "TX:" | tail -1 | awk '{print $2}')"done
}function OS_NETWORK(){# 系统IPlocal IP=$(hostname -I)# 网关地址local GATEWAY=$(ip route | grep default &>/dev/null && ip route | grep default | awk '{print $3}' || echo '未设置默认网关')# DNS地址local DNS=(`cat /etc/resolv.conf | grep nameserver | uniq | awk '{print $2}'`)RED "################################# [ 系统网络巡检区 ] ######################################"GRE "IP地址:$IP"GRE "网关地址:$GATEWAY"GRE "DNS地址:${DNS[@]}"GRE "网关[$GATEWAY]连接情况: $(ping -t 1 -i 1 -c 5 -W 1 192.168.0.2 &>/dev/null && echo '正常通信' || echo '无法通信')"
}function OS_RESOURCE(){# 系统磁盘列表local DISK_LIST=(`lsblk | egrep "^[a-z].*" | grep -v "^sr" | awk '{print $1}'`)# 系统磁盘使用率情况local DISK_PER=(`df -h | awk 'NR>1 && $1 !~/sr/ {gsub(/%/,"",$5);print $5}'`)# CPU空闲率local CPU_FREE=$(top -d 1 -n 1 -b | awk 'NR==3{print $8}')# CPU使用率local CPU_USE=$(awk 'BEGIN{printf "%.1f%\n",100-'$CPU_FREE'}')# CPU_TOP_TENlocal CPU_TOP_TEN=$(top -d 1 -n 1 -b | column -t | awk 'NR>=7 && NR<=15')# 当前进程数local CPU_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $2}')# 当前正在运行进程数local CPU_RUN_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $4}')# 当前正在休眠进程数local CPU_SL_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $6}')# 当前停止运行进程数local CPU_STOP_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print 8}')# 当前僵尸进程数local CPU_ZOM_PROCESSORS=$(top -d 1 -n 1 -b | awk 'NR==2{print $10}')RED "################################# [ 系统资源巡检区 ] ######################################"GRE "CPU使用率:$CPU_USE"GRE "CPU使用率前十进程信息:"GRE "$(ps -eo user,pid,pcpu,pmem,args --sort=-pcpu | head -n 10)"GRE "\n内存使用率前十进程信息:"GRE "$(ps -eo user,pid,pcpu,pmem,args --sort=-pmem | head -n 10)"GRE "\n磁盘IO信息:$(iotop -bon 1 &>/dev/null || echo 'io top 未安装信息获取失败')"GRE "$(iotop -bon 1 &>/dev/null && iotop -bon 1 | head -n 13)"GRE "\n磁盘分区使用率是否正常:正常"for i in ${DISK_LIST[@]}doif [[ -z "$(lsblk --nodeps -no serial /dev/$i)" ]]; thenGRE "磁盘:$i 磁盘序列号:获取信息失败"   elseGRE "磁盘:$i  磁盘序列号:$(lsblk --nodeps -no serial /dev/$i)"fidonefor i in ${DISK_PER[@]}doif [ $i -gt 80 ]; thenRED "某分区磁盘使用率为:$i% > 80% 请及时扩容"fidoneGRE "\n系统磁盘分区inode使用情况:"GRE "$(df -Thi)"GRE "\n系统当前进程数:$CPU_PROCESSORS"   GRE "系统当前进程运行数:$CPU_RUN_PROCESSORS"GRE "系统当前休眠进程数:$CPU_SL_PROCESSORS"GRE "系统当前停止进程数:$CPU_STOP_PROCESSORS"GRE "系统当前僵尸进程数:$CPU_ZOM_PROCESSORS"GRE "\n系统当前允许最大fd数量:$(cat /proc/sys/fs/file-nr | awk '{print $3}')"GRE "系统当前已打开fd数量:$(cat /proc/sys/fs/file-nr | awk '{print $1}')"GRE "系统单个进程运行打开fd数量:$(ulimit -n)"GRE "\n系统当前socket连接数:$(netstat -anp &>/dev/null && netstat -anp | wc -l || echo 'net-tools 未安装,获取信息失败')"GRE "系统 established socket数量: $(netstat -anp &>/dev/null && netstat -anp | grep "ESTABLISHED" | wc -l || echo 'net-tools 未安装,获取信息失败')"GRE "系统 sync socket数量:$(netstat -anp &>/dev/null && netstat -anp | grep "SYN" | wc -l || echo 'net-tools 未安装,获取信息失败')"GRE "系统当前已建立socket如下:"GRE "$(netstat -anp &>/dev/null && netstat -anp | grep ESTABLISHED | awk '{printf "  本地:%-20s <=>    外部:%-22s\n",$4,$5}' || echo '')"
}function OS_SECURITY(){# 系统所有能登录的用户local OS_USER=(`cat /etc/passwd | awk -F':' '$NF !~/nologin|sync|shutdown|halt/ {print $1}'`)# Selinuxlocal OS_SELINUX=`getenforce`# 防火墙状态local OS_FIREWALLD=`service firewalld status &>/dev/null | grep "running" && echo on || echo off`RED "################################# [ 系统安全巡检区 ] ######################################"GRE "防火墙状态: $OS_FIREWALLD"GRE "Selinux状态:${OS_SELINUX}\n"GRE "系统可登录用户数:$(cat /etc/passwd | awk -F':' '$NF !~/nologin|sync|shutdown|halt/ {print $1}' | wc -l)"GRE "系统可登录用户:${OS_USER[@]}"for i in ${OS_USER[@]}doGRE "用户 $i 最后1次登录信息: $(lastlog -u $i | awk 'NR==2')"doneGRE "系统当前登录用户:"GRE "$(who | sed 's#[()]##g' | awk '{printf "   用户: %10s 终端: %7s 登录时间: %7s %7s 登录IP: %7s\n",$1,$2,$3,$4,$5}')"
}function OS_SERVICE(){RED "################################# [ 系统服务巡检区 ] ######################################"GRE "自行添加"
}if [ $(id -u -n) != "root" ]; thenERROR "请以ROOT用户运行这个脚本"
fiOS_INFO
OS_HDWARE
OS_NETWORK
OS_RESOURCE
OS_SECURITY

巡检结果

################################# [ 系统信息巡检区 ] ######################################
主机名:localhost.localdomain
主机类型:Linux
主机序列号:VMware-56
系统版本:Kylin
系统内核版本:3.10.0-514.ky3.kb3.x86_64
系统机器码:获取信息失败
系统语言环境:zh_CN.UTF-8
系统时间;2022-02-13 21:42:10
系统已运行时间: 3:46
系统上次重启时间:Sun Feb 13 17:55 21:42
系统上次关机时间:Sun Feb 13 15:22 17:55
################################# [ 系统硬件巡检区 ] ######################################
CPU型号:11th Gen Intel(R) Core(TM) i5-11300H @ 3.10GHz
CPU架构:x86_64
CPU个数:2
CPU核数: 1
CPU频率:3109.159 MHz
内存容量:3.68 GB
内存空闲:3.08 GB
内存可用:3.16 GB
内存使用率:14.1%
SWAP容量:2.99 GB
SWAP可用容量:2.99 GB
SWAP使用率:0.0%
内存Buffer大小:1004 KB
内存Cache大小:282312 KB
网卡:ens37  状态: UP RX: 256 TX: 256
网卡:ens33  状态: UP RX: 256 TX: 256
################################# [ 系统网络巡检区 ] ######################################
IP地址:192.168.0.10 192.168.1.10
网关地址:192.168.0.2
DNS地址:114.114.114.114 8.8.8.8
网关[192.168.0.2]连接情况: 正常通信
################################# [ 系统资源巡检区 ] ######################################
CPU使用率:0.3%
CPU使用率前十进程信息:
USER        PID %CPU %MEM COMMAND
root          1  0.0  0.1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2  0.0  0.0 [kthreadd]
root          3  0.0  0.0 [ksoftirqd/0]
root          5  0.0  0.0 [kworker/0:0H]
root          7  0.0  0.0 [migration/0]
root          8  0.0  0.0 [rcu_bh]
root          9  0.0  0.0 [rcu_sched]
root         10  0.0  0.0 [watchdog/0]
root         11  0.0  0.0 [watchdog/1]内存使用率前十进程信息:
USER        PID %CPU %MEM COMMAND
gdm        1992  0.0  2.5 gnome-shell --mode=gdm
gdm        1597  0.0  0.5 /usr/libexec/gnome-settings-daemon
root       1101  0.0  0.4 /usr/bin/python -Es /usr/sbin/tuned -l -P
root       1152  0.0  0.4 /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-KSDXxS/database -seat seat0 -nolisten tcp vt1
polkitd     780  0.0  0.3 /usr/lib/polkit-1/polkitd --no-debug
gdm        2415  0.0  0.2 /usr/libexec/ibus-x11 --kill-daemon
gdm        2425  0.0  0.2 /usr/libexec/caribou
gdm        1415  0.0  0.2 /usr/bin/gnome-session --autostart /usr/share/gdm/greeter/autostart
root        776  0.0  0.2 /usr/sbin/NetworkManager --no-daemon磁盘IO信息:
Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/sTID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND磁盘分区使用率是否正常:正常
磁盘:sda   磁盘序列号:获取信息失败
磁盘:sdb   磁盘序列号:获取信息失败
磁盘:sdc   磁盘序列号:00000000000000000001
磁盘:nvme0n1   磁盘序列号:VMware NVME_0000系统磁盘分区inode使用情况:
文件系统               类型     Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/kylin-root xfs        13M    174K     13M       2% /
devtmpfs               devtmpfs  469K     421    468K       1% /dev
tmpfs                  tmpfs     472K       6    472K       1% /dev/shm
tmpfs                  tmpfs     472K     567    472K       1% /run
tmpfs                  tmpfs     472K      16    472K       1% /sys/fs/cgroup
/dev/sda1              xfs       512K     330    512K       1% /boot
tmpfs                  tmpfs     472K      17    472K       1% /run/user/42
tmpfs                  tmpfs     472K       1    472K       1% /run/user/0系统当前进程数:206
系统当前进程运行数:1
系统当前休眠进程数:205
系统当前停止进程数:8
系统当前僵尸进程数:0系统当前允许最大fd数量:378675
系统当前已打开fd数量:3232
系统单个进程运行打开fd数量:1024系统当前socket连接数:351
系统 established socket数量: 2
系统 sync socket数量:0
系统当前已建立socket如下:本地:192.168.0.10:22      <=>    外部:192.168.0.1:10581     本地:192.168.0.10:22      <=>    外部:192.168.0.1:10582
################################# [ 系统安全巡检区 ] ######################################
防火墙状态: off
Selinux状态:Enforcing系统可登录用户数:2
系统可登录用户:root test
用户 root 最后1次登录信息: root             pts/1    192.168.0.1      日 2月 13 17:57:35 +0800 2022
用户 test 最后1次登录信息: test                                       **从未登录过**
系统当前登录用户:用户:    unknown 终端:      :0 登录时间: 2022-02-13   17:56 登录IP:      :0用户:       root 终端:   pts/0 登录时间: 2022-02-13   17:57 登录IP: 192.168.0.1用户:       root 终端:   pts/1 登录时间: 2022-02-13   17:57 登录IP: 192.168.0.1

Linux自动巡检脚本相关推荐

  1. Linux服务器系统自动巡检脚本生成html报告

    一. 前言 1.在上一篇文章里给大家介绍oracle自动巡检脚本生成html报告,这篇文章介绍linux服务巡检脚本生成html报告. 2.脚本依然是简单脚本语句的堆积,方便大家二次编辑使用. 3.项 ...

  2. linux自动巡检截图,Linux系统巡检shell脚本

    #!/bin/bash #主机信息每日巡检 IPADDR=$(ifconfig eth0|grep 'inet addr'|awk -F '[ :]' '{print $13}') #环境变量PATH ...

  3. linux自动拨号脚本,arm中实现pppd连接GPRS上网的相关笔记,含GPRS自动拨号脚本(真正的实时监控,断线自动重拨)...

    在嵌入式Linux下GPRS上网方案 笔记1 硬/软件环境 基于S3C2410的嵌入式系统,COM1连接PC,COM2连接SIM300 GPRS模块. 该系统运行在Linux 2.6.14操作系统下, ...

  4. linux系统巡检脚本

    转自:https://blog.51cto.com/11555417/2046978 #!/bin/bash #主机信息每日巡检 IPADDR=$(ifconfig eth0|grep 'inet a ...

  5. Linux CentOS 巡检脚本

    系统巡检脚本,有常用的检查模块,如硬盘.内存.进程等.安全性检查等. 1.巡查脚本 代码如下(示例):xunjian.sh #!/bin/bash#系统状态 host(){while :doclear ...

  6. linux服务器巡检脚本shell

    #!/bin/bash #主机信息每日巡检IPADDR=$(ifconfig eth0|grep 'inet addr'|awk -F '[ :]' '{print $13}') #环境变量PATH没 ...

  7. linux 自动ping脚本,linux上ping脚本及zabbix3.xx上自动发现

    有时候,我们需要在linux上ping一些地址,判断地址是否被占用 一.编写shell脚本 脚本如下:#!/bin/bash for i in 192.168.16.{1..255} do ( pin ...

  8. php 如何自动执行脚本文件,使用php作linux自动执行脚本

    用php作一社区, 在写到计算最高上线人数时, 成功调试出把PHP作为 shell script直接在服务器上运行. 在作社区时, 时常需要统计上线人数等数据. 一般做法是, 把这段代码放在用户 lo ...

  9. Linux 主机巡检脚本(包含 k8s)

    文章目录 效果展示 目录结构 config/conf.sh inspection.sh 效果展示 ===================== 2022/05/20-09:12:11+0000 ==== ...

最新文章

  1. javaBean【02】javaBean与表单应用
  2. C小项目——电子词典
  3. 操作系统学习笔记-2.1.4进程通信
  4. gradle生成java文件_使用Gradle for Java插件生成Java类
  5. condition_variable的怪事
  6. 微信小程序架构分析 (中)
  7. 【软考】信息系统项目管理师,考试大纲与历年考点分析,学习方法(2021版)
  8. This iPhone is running iOS 12.2(16E227),which may be supported by this version of Xcode
  9. 访问oracle数据库语句,Oracle数据库SQL ——Select 语句使用方法
  10. WiFi PHY技术之自动增益控制(AGC)
  11. t恤衫尺码对照表_T恤衫
  12. 几个免费的长链接缩短工具
  13. 手机屏幕常见故障_iPhone手机一些比较常见的维修故障分析
  14. 曾被诉“抄袭”,头条搜索想要突围有点难
  15. 从输入URL到页面展示的详细过程
  16. 关于三角形的心及费马点
  17. #Python中创建一个字符串映射表
  18. 删除顽固的文件夹--删不掉的文件夹update处理方法
  19. 毕业设计-基于JSP的网上购书系统.doc
  20. STM32单片机低功耗剖析

热门文章

  1. 每日一问 --什么是时域的波形?频域的频谱?
  2. jquery-qrcode客户端二维码生成类库扩展--融入自定义Logo图片
  3. [小游戏资源] 微信小游戏开发资源目录
  4. P4844 LJJ爱数数 数论
  5. 初识OFDM(六):从零开始的OFDM误码率仿真
  6. 比例导引律Matlab程序,是否有关于比例导引方面的仿真程序?
  7. linux中nobody添加所有权限,LINUX用户权限问题(nobody用户删除文件)
  8. linux车机端carlife移植、开发
  9. excel排版用于印刷:pdf批量转换为图片方便校验排版错误
  10. termux使用教程python-利用Termux超级终端在手机上运行Python开发环境