Linux一键巡检脚本,建议收藏!

艺帆风顺 发布于 2025-04-07 17 次阅读


今天分享一个Linux一键快速巡检的Shell脚本,涵盖了常见的系统性能、网络配置、安全检查等方面,适用于单机快速巡检,。

1、巡检内容

  • [1] 系统基本信息
  • [2] CPU 信息
  • [3] 内存使用情况
  • [4] 磁盘使用情况
  • [5] 网络配置和连接
  • [6] 服务状态检查
  • [7] 安全检查
  • [8] 登录记录
  • [9] 系统日志检查
  • [10] 性能分析

巡检结果展示

2、编写巡检脚本

# 编写巡检脚本vi /opt/linux_inspection.sh

添加下面内容

#!/bin/bash# Linux 一键巡检脚本# 作者: liyb# 生成时间: $(date)LOG_FILE="/opt/巡检报告_$(date +%F_%T).log"# 初始化日志文件echo"系统巡检报告" > $LOG_FILEecho"生成时间: $(date)" >> $LOG_FILE# 输出函数log() {    echo"$1" | tee -a $LOG_FILE}log""log""log"======================[1] 系统基本信息========================"log"主机名: $(hostname)"log"IP地址: $(hostname -I | cut -d' ' -f1)"log"操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2 | tr -d '"')"log"内核版本: $(uname -r)"log"启动时间: $(uptime -s)"log"运行时长: $(uptime -p)"log"系统负载: $(uptime | awk -F'load average:' '{print $2}')"log"当前时间: $(date)"log""log"======================[2] CPU 信息==========================:"log"CPU 型号: $(lscpu | grep 'Model name' | awk -F: '{print $2}' | sed 's/^ *//')"log"逻辑CPU核数:  $(grep "processor" /proc/cpuinfo|sort -u|wc -l)"log"物理CPU核数:  $(grep "physical id" /proc/cpuinfo |sort -u|wc -l)"log"CPU 使用率: $(top -bn1 | grep '%Cpu' | awk '{print $2}')%"log""log"======================[3] 内存使用情况=========================="free -h | tee -a $LOG_FILElog"总共内存:  $(free -mh|awk "NR==2"|awk '{print $2}')"log"使用内存: $(free -mh|awk "NR==2"|awk '{print $3}')"log"剩余内存: $(free -mh|awk "NR==2"|awk '{print $7}')"log"内存使用占比:  $(free | grep -i mem |awk '{print $6/$2*100}'|cut -c1-5)"log""log"======================[4] 磁盘使用情况=========================="df -hT | tee -a $LOG_FILElog""log"======================[5] 网络配置和连接=========================="log"IP 地址: $(hostname -I)"log"默认网关: $(ip route | grep default | awk '{print $3}')"log"网络接口状态:"ifconfig  | tee -a $LOG_FILElog""log"网络连接状态:"ss -tunlp | tee -a $LOG_FILElog""log"======================[6] 服务状态检查=========================="log"检查特定服务状态 (Firewalld,SSH,Nginx,,Apache,,MySQL):"for service in firewalld sshd nginx apache2 mysqld; do    if systemctl is-active --quiet $servicethen        log"$service 服务状态: 正在运行"    else        log"$service 服务状态: 未运行"    fidonelog""log"========================[7] 安全检查============================"log"SSH 配置:"grep -E "^#?PermitRootLogin|^#?PasswordAuthentication" /etc/ssh/sshd_config | tee -a $LOG_FILElog""log"系统用户:"awk -F: '{if ($3 >= 1000) print $1}' /etc/passwd | tee -a $LOG_FILElog""log"========================[8] 登录记录============================"log"当前登录用户:"who | tee -a $LOG_FILElog""log"最近登录记录:"last -a | head -10 | tee -a $LOG_FILElog""log"========================[9] 系统日志检查============================"log"登录失败日志:"grep "Failed password" /var/log/auth.log | tail -10 | tee -a $LOG_FILE || log"未检测到 auth.log 文件"log""log"检查系统重启记录:"last reboot | head -5 | tee -a $LOG_FILElog""log"========================[10] 性能分析============================"log"内存占用排行前5:"ps aux --sort=-%mem | head -6 | tee -a $LOG_FILElog""log"CPU 占用排行前5:"ps aux --sort=-%cpu | head -6 | tee -a $LOG_FILElog""log"=============================巡检完成============================"log"巡检报告生成完成,保存路径: $LOG_FILE"log"请根据巡检内容检查系统状态!"log""

3 执行脚本

# 给脚本添加权限chmod +x linux_inspection.sh# 运行脚本./linux_inspection.sh# 也可以直接执行sh /opt/linux_inspection.sh

4 查看巡检报告

脚本运行完成后,日志文件会保存到 /opt/ 目录,文件名为 linux_inspection_YYYY-MM-DD_HH-MM-SS.log,可以使用以下命令查看:

less  /opt/巡检报告_2025-01-10_12:41:26.log

5 做成定时任务

使用 cron 定时运行脚本:

crontab -e

添加任务:每天早上八点执行脚本

0 8 * * * /bin/sh /opt/linux_inspection.sh

如有帮助,请点个赞和“在看”!如有不足,敬请指出!感谢你的关注与支持。


往期精彩文章