0

0

Linux 自动化巡检脚本实现

舞姬之光

舞姬之光

发布时间:2026-02-22 20:24:58

|

767人浏览过

|

来源于php中文网

原创

优先选bash,因其轻量、无依赖、启动快,适合纯系统指标采集;python仅在需日志解析、api调用或生成html报告时使用。

linux 自动化巡检脚本实现

巡检脚本该用 bash 还是 Python?

优先选 bash,除非你要做日志解析、API 调用或生成 HTML 报告。纯系统指标采集(CPU、内存、磁盘、进程、服务状态)用 bash 更轻量、无依赖、启动快。Python 虽然写起来顺手,但每次执行都要加载解释器,在低配服务器上可能拖慢巡检节奏,而且容易因环境缺失 psutilrequests 直接失败。

常见错误现象:/usr/bin/env: ‘python’: No such file or directory —— 很多 CentOS 7+ 默认没装 python3,连软链接都未必有;而 bash 在所有 Linux 发行版里都是稳的。

  • 简单指标采集(df -hfree -msystemctl is-active sshd)全用 bash 写,50 行内搞定
  • 需要正则提取日志关键字(比如从 /var/log/secure 找 failed login)再用 grep -E + awk,别急着上 Python
  • 真要调用外部 API(如钉钉机器人推送),用 curl 拼 JSON 就够了,不用引入 requests

怎么让脚本安全地获取 root 权限又不暴露密码?

别在脚本里写 sudo su -c 或硬编码密码。直接用 sudo 配置免密命令白名单最稳妥。运维账号本身不该有 root 密码,也不该用 ssh root@localhost 绕。

使用场景:脚本需执行 df -h(普通用户可运行)和 journalctl -n 20 --since "1 hour ago"(默认非 root 不可见)—— 后者必须提权。

  • 编辑 /etc/sudoers.d/healthcheck(用 visudo),加一行:monitor ALL=(root) NOPASSWD: /usr/bin/journalctl
  • 脚本里调用时写成 sudo journalctl -n 20 --since "1 hour ago" | grep -i 'failed\|denied',不加 -S 或交互式输密码
  • 禁止写 ALL=(root) NOPASSWD: ALL,这是高危配置;只放开真正需要的二进制路径,且带参数限制(必要时用 sha256sum 校验命令完整性)

输出结果怎么存才方便后续分析?

别用纯文本追加到 /tmp/health.log。时间戳混乱、无结构、难 grep。直接输出为带字段的 TS SV(Tab-Separated Values),文件名带日期,保留最近 7 天即可。

Android传感器编程 中文WORD版
Android传感器编程 中文WORD版

本文档主要讲述的是Android传感器编程;传感器是一种物理装置或生物器官,能够探测、感受外界的信号、物理条件(如光、热、湿度)或化学组成(如烟雾),并将探知的信息传递给其它装置或器官。同时也可以说传感器是一种检测装置,能感受被测量的信息,并能将检测的感受到的信息,按一定规律变换成为电信号或其它所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。它是实现自动检测和自动控制的首要环节。感兴趣的朋友可以过来看看

下载

性能影响:每天写一次大文件比每分钟追加小段快得多;用 date +%Y%m%d 命名,避免 find /var/log/health -mtime +7 -delete 误删。

  • 每行格式统一:$(date '+%Y-%m-%d %H:%M') $(hostname) $(df -h / | awk 'NR==2 {print $5}') $(systemctl is-active nginx)
  • 输出重定向用 > /var/log/health/$(date +\%Y\%m\%d).tsv,不是 >>,避免跨天混写
  • 检查磁盘空间前先 df /var/log | awk '$5 > 90 {exit 1}',超阈值就跳过写入,防止巡检本身把磁盘打满

定时执行时为什么 cron 日志总为空?

cron 环境变量和你手动执行时完全不同:PATH 极简、没 ~/.bashrc$HOME 可能指向 /root。脚本里写的 python3jq,cron 找不到。

错误现象:CRON[1234]: (root) CMD (/opt/scripts/check.sh) 出现在 /var/log/cron,但脚本没输出、没发通知、也没报错文件。

  • 脚本开头固定写三行:#!/bin/bashexport PATH="/usr/local/bin:/usr/bin:/bin"cd /opt/scripts || exit 1
  • 所有命令用绝对路径:/bin/df/usr/bin/systemctl/usr/bin/journalctl,别信 $PATH
  • 重定向 stderr 到日志:/opt/scripts/check.sh >> /var/log/health/cron.log 2>&1,否则错误全丢进黑洞

最容易被忽略的是环境隔离——哪怕脚本本地测试全通,放进 cron 就静默失败。每次改完先手动跑 env -i /bin/bash -c '/opt/scripts/check.sh' 模拟 cron 环境,再扔进定时任务。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

240

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

518

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

567

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

242

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

562

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3606

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

49

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

67

2026.01.13

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1030

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.5万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号