Linux一键巡检脚本

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

1、巡检内容

  • 1\] 系统基本信息

  • 3\] 内存使用情况

  • 5\] 网络配置和连接

  • 7\] 安全检查

  • 9\] 系统日志检查

巡检结果展示

2、编写巡检脚本

复制代码
# 编写巡检脚本
vi linux_inspection.sh

添加下面内容

复制代码
#!/bin/bash

# Linux 一键巡检脚本
# 作者: liyb
# 生成时间: $(date)

LOG_FILE="/opt/巡检报告_$(date +%F_%T).log"

# 初始化日志文件
echo "系统巡检报告" > $LOG_FILE
echo "生成时间: $(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_FILE
log  "总共内存:  $(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_FILE
log ""

log "======================[5] 网络配置和连接=========================="
log "IP 地址: $(hostname -I)"
log "默认网关: $(ip route | grep default | awk '{print $3}')"
log "网络接口状态:"
ifconfig  | tee -a $LOG_FILE
log ""

log "网络连接状态:"
ss -tunlp | tee -a $LOG_FILE
log ""

log "======================[6] 服务状态检查=========================="

log "检查特定服务状态 (Firewalld,SSH,Nginx,,Apache,,MySQL):"
for service in firewalld sshd nginx apache2 mysqld; do
    if systemctl is-active --quiet $service; then
        log "$service 服务状态: 正在运行"
    else
        log "$service 服务状态: 未运行"
    fi
done
log ""

log "========================[7] 安全检查============================"
log "SSH 配置:"
grep -E "^#?PermitRootLogin|^#?PasswordAuthentication" /etc/ssh/sshd_config | tee -a $LOG_FILE
log ""


log "系统用户:"
awk -F: '{if ($3 >= 1000) print $1}' /etc/passwd | tee -a $LOG_FILE
log ""


log "========================[8] 登录记录============================"
log "当前登录用户:"
who | tee -a $LOG_FILE
log ""

log "最近登录记录:"
last -a | head -10 | tee -a $LOG_FILE
log ""

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_FILE
log ""


log "========================[10] 性能分析============================"
log "内存占用排行前5:"
ps aux --sort=-%mem | head -6 | tee -a $LOG_FILE
log ""

log "CPU 占用排行前5:"
ps aux --sort=-%cpu | head -6 | tee -a $LOG_FILE
log ""


log "=============================巡检完成============================"
log "巡检报告生成完成,保存路径: $LOG_FILE"
log "请根据巡检内容检查系统状态!"
log ""

3 执行脚本

复制代码
# 给脚本添加权限
chmod +x linux_inspection.sh

# 运行脚本
./linux_inspection.sh

# 也可以直接执行
sh 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
相关推荐
几道之旅1 分钟前
分别在windows和linux上使用curl,有啥区别?
linux·运维·windows
季柳东2 分钟前
在虚拟机Ubuntu18.04中安装NS2教程及应用
linux·运维·ubuntu
冼紫菜5 分钟前
如何在 CentOS 7 虚拟机上配置静态 IP 地址并保持重启后 SSH 连接
linux·开发语言·centos·ssh
christine-rr28 分钟前
【25软考网工】第六章(4)VPN虚拟专用网 L2TP、PPTP、PPP认证方式;IPSec、GRE
运维·网络·网络协议·网络工程师·ip·软考·考试
oioihoii36 分钟前
C++23 views::slide (P2442R1) 深入解析
linux·算法·c++23
乐言3611 小时前
如何用Jmeter实现自动化测试?
运维·jmeter·自动化
hnlucky1 小时前
《基于 Kubernetes 的 WordPress 高可用部署实践:从 MariaDB 到 Nginx 反向代理》
运维·数据库·nginx·云原生·容器·kubernetes·mariadb
Jerry&Louis1 小时前
【Ubuntu】neovim & Lazyvim安装与卸载
linux·ubuntu
风筝超冷1 小时前
获取高德地图JS API的安全密钥和Key的方法
服务器·mysql·js api
我叫珂蛋儿吖2 小时前
[redis进阶六]详解redis作为缓存&&分布式锁
运维·c语言·数据库·c++·redis·分布式·缓存