首页
/ NUT项目在树莓派上配置NOTIFYCMD通知功能的实践指南

NUT项目在树莓派上配置NOTIFYCMD通知功能的实践指南

2025-06-28 08:08:37作者:庞眉杨Will

背景介绍

NUT(Network UPS Tools)是广泛使用的UPS电源管理工具套件,其中的upsmon守护进程可以通过NOTIFYCMD配置自定义通知脚本。在实际部署中,很多用户会遇到通知脚本执行权限和邮件发送的问题。

典型问题现象

在树莓派Bullseye系统上部署NUT时,虽然SSH终端能收到UPS断电通知,但配置的邮件通知脚本未能正常工作。具体表现为:

  1. 通知脚本已正确放置在/etc/nut目录
  2. 脚本权限设置为774(root:nut)
  3. MSMTP邮件客户端单独测试正常

根本原因分析

经过排查发现两个关键问题点:

  1. 用户上下文问题
  • upsmon默认以nut用户身份运行
  • 但脚本和邮件客户端的执行涉及用户权限继承
  • 系统未创建nut用户导致权限链断裂
  1. 邮件服务器限制
  • 部分邮件服务商会拒绝来自root用户的发信请求
  • 需要配置合适的发件人身份

解决方案

方案一:调整运行用户

修改/etc/nut/upsmon.conf中的配置:

RUN_AS_USER <系统有效用户>

替换为系统中实际存在的、有邮件发送权限的用户

方案二:完善权限配置

  1. 创建nut系统用户:
sudo useradd -r -s /bin/false nut
  1. 配置sudo权限:
echo 'nut ALL=(ALL) NOPASSWD: /usr/bin/msmtp' >> /etc/sudoers
  1. 修改通知脚本:
#!/bin/bash
EMAIL='your@email.com'
printf "Subject: NUT ALERT\n\nUPS: $UPSNAME\nAlert: $NOTIFYTYPE" | sudo -u <有效用户> msmtp $EMAIL

最佳实践建议

  1. 脚本调试技巧
  • 可先测试直接以目标用户身份运行脚本
  • 使用sudo -u nut /path/to/script.sh模拟运行环境
  1. 邮件配置验证
echo "Test" | msmtp -v your@email.com
  1. 日志检查
  • 查看/var/log/syslog中的nut相关日志
  • 检查邮件客户端日志(~/.msmtp.log)

总结

NUT的通知功能配置需要注意运行上下文和权限继承问题。通过合理配置运行用户和邮件客户端权限,可以确保UPS状态变化时及时收到通知。对于树莓派等嵌入式设备,建议使用轻量级邮件客户端如msmtp,并注意服务商对发件人的限制策略。

登录后查看全文
热门项目推荐

热门内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
178
263
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
868
514
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
130
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
279
315
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
373
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
599
58
GitNextGitNext
基于可以运行在OpenHarmony的git,提供git客户端操作能力
ArkTS
10
3