本教程适用于已经在飞牛OS中正确识别 UPS 硬件的情况。
飞牛OS通常会在后台自动加载驱动,无需手动配置
ups.conf。我们的操作重点在于“开启网络广播”,以便让从机共享状态。
环境:
主控 : 飞牛OS,物理连接UPS。
从机: Ubuntu,通过网络同步状态。
UPS 型号:APC Back-UPS系列
注:文中所有带有
[ ]的部分(例如[主控IP]、[密码])均为填空项。在实际操作时,请务必将其替换为你自己的真实信息,并且连同中括号本身一起删掉。
主控端配置
主控端是指连接UPS USB线的机器。
它的任务是:监听UPS数据并广播给局域网内准入的其他设备。
1. 硬件识别:确认 UPS 身份
在飞牛终端SSH输入以下命令,查看UPS在哪个位置:
ls /dev/bus/usb/00*/00*或者输入:
lsusb通常 APC 的 UPS 会显示在类似 /dev/bus/usb/001/002 这样的路径
确认 UPS 是否被系统识别。一般会看到类似 Bus 003 Device 002: ID 051d:0002 American Power Conversion... 的字样。
在飞牛系统中,往往不用默认的 ups,而是一串数字(如1612138)。
所以我们需要输入命令获取它在NUT里的真名:
upsc -l注意:后续所有配置都要使用这个名字,所以请牢记
2. 修改用户配置文件 upsd.users
在该文件末尾添加一个给从机使用的账号
sudo nano /etc/nut/upsd.users添加内容:
[upsmon]
password = "自己设置一个密码"
upsmon slave注:不局限于使用upsmon,自己想设置其他账号名也可以,但一定要记得住,后面要用
3. 修改监听配置 upsd.conf
默认只监听本地,必须开启网络监听,从机才能加入连接。
sudo nano /etc/nut/upsd.conf自己添加一行监听端口:
LISTEN 0.0.0.0 3493注:0.0.0.0 表示监听所有网口。
NUT 默认的通信端口是 3493。除非 3493 端口被占用,否则建议不要修改端口号。
最后重启飞牛服务:
sudo systemctl restart nut-server4.放行端口
添加监听端口后一定要在防火墙创建放行规则,否则无法连接
从机端配置
从机是指通过局域网加入共享UPS状态的机器,断电时它会跟着主控端下达的命令一起关机。
1. 安装客户端软件
如果系统版本较旧,需先确认软件源正常,再执行:
sudo apt update
sudo apt install nut-client -y2. 设置运行模式:nut.conf
sudo nano /etc/nut/nut.conf找到文本并修改为: MODE=netclient
3. 设置监控指令:upsmon.conf
这是最核心的一步,告诉从机去哪找主控端。
sudo nano /etc/nut/upsmon.conf翻到最底部,添加一行:
MONITOR [UPS名字]@[主控IP] 1 [账号] [密码] slave这里的 [账号] 和 [密码] 必须与主控端第 2 步在 upsd.users 里设置的完全一致,否则会导致从机无法加入。
重启服务:
sudo systemctl restart nut-client添加中文脚本
对于我这种英文不太彳亍的人来说,虽然配置好了,但看从机端的UPS状态却如同看天书一样,为了不每次都掏翻译工具,也为了以后方便维护,我们添加一个中文脚本以方便管理。
1. 首先验证一下连接
在从机端输入:
upsc [UPS名字]@[主控端IP]如果刷出一大堆英文参数,如:battery.charge:,恭喜你,从机端成功加入广播!
2. 一键中文状态脚本
为了直观查看,创建一个 ups_cn.sh 脚本:
为了避免排版混乱,我整理了一个完整命令,直接在终端粘贴就行:
cat << 'EOF' > ~/ups_cn.sh
#!/bin/bash
UPS_NAME="[UPS名字]@[主控端IP]"
echo "--------------------------------------"
echo " UPS 实时状态 (中文版) "
echo "--------------------------------------"
upsc $UPS_NAME 2>/dev/null | sed -e 's/battery.charge:/[电池电量] /g' -e 's/ups.status:/[运行状态] /g' -e 's/battery.runtime:/[预计续航(秒)] /g' -e 's/ups.load:/[当前负载(%)] /g' -e 's/input.voltage:/[输入电压(V)] /g' -e 's/device.model:/[设备型号] /g' -e 's/ups.realpower.nominal:/[额定功率(W)] /g' -e 's/OL CHRG/市电在线 (充电中)/g' -e 's/OL/市电在线/g' -e 's/OB DISCHRG/电池供电 (放电中)/g' -e 's/OB/电池供电/g' | grep -E "电池|状态|续航|负载|电压|型号|功率"
echo "--------------------------------------"
EOF
chmod +x ~/ups_cn.sh完成后输入命令运行一下:
./ups_cn.sh可现在我们必须输入 ./ups_cn.sh 才能看,如果哪天忘记岂不是很麻烦,所以我们可以添加这条命令:
sudo ln -s ~/ups_cn.sh /usr/local/bin/ups这样,以后你无论在哪个文件夹,直接输入 ups 回车就能查看UPS实时状态了。
评论