使用 Eaton 3S UPS 启动网络 UPS 工具时出现问题

使用 Eaton 3S UPS 启动网络 UPS 工具时出现问题

在 Eaton 3S 700VA UPS 上运行 Ubuntu 服务器。Eaton 的 USB 连接进入我的 Ubuntu 服务器。我正在尝试使用坚果管理 UPS。

之后sudo su

cat /etc/nut/ups.conf

[eaton]
    driver = usbhid-ups
    port = auto
    desc = "Eaton 3S"

upsdrvctl -t start

Network UPS Tools - UPS driver controller 2.6.1
*** Testing mode: not calling exec/kill
   0.000000 
   0.000805 Starting UPS: eaton
   0.000955 exec:  /lib/nut/usbhid-ups -a eaton

upsdrvctl start

Network UPS Tools - UPS driver controller 2.6.1
Network UPS Tools - Generic HID driver 0.35 (2.6.1)
USB communication driver 0.31
Can't claim USB device [0463:ffff]: could not detach kernel driver from interface 0: Operation not permitted
Driver failed to start (exit status=1)

答案1

虽然我并不声称自己是这方面的专家,但我担心这个答案不会导致重启后权限的持续改变,和/或 UPS 的 USB 电缆被移动到不同的端口。

以下是此处的信息:Nannerpuss 的沉思:NUT - 网络 UPS 工具 - 在 Ubuntu 上

“... 问题在于 Ubuntu 将设备安装为 root 所有,但 nut 守护进程却降为没有必要访问权限的非特权帐户。简单的解决方法是使用 udev 来调整设备权限。

连接设备并(以 root 身份)运行 lsusb 并找到它。记下总线和设备 ID 以及供应商:产品 ID 对...”

使用如上答案中的输出:

$ lsusb
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply   

再次从链接“...您可以创建一个 udev 规则来控制启动时的挂载行为:...”(经过编辑以更好地匹配此场景)”

  • 使用您最喜欢的文本编辑器创建(最有可能)一个新的 udev rules.d 文件。对于相同的操作,该数字必须高于任何其他 udev.d 规则文件:

例如

sudo nano /etc/udev/rules.d/90-nut-ups.rules

# /etc/udev/rules.d/90-nut-ups.rules
ACTION=="add", \
SUBSYSTEM=="usb", \
ATTR{idVendor}=="051d", ATTR{idProduct}=="0002", \
MODE="0660", GROUP="nut"

该规则会监视供应商和产品与 UPS 匹配的 USB 设备添加情况。然后,它会将模式设置为 0660,并将组设置为 nut,而不是默认的 root。

请注意,此答案使用 660 权限而不是 666,因为这应该足够并且更安全。

重新加载 udev(重新启动,或者从 UPS 的 PC 端口拔下然后重新插入 USB 电缆),然后断开并重新连接设备并测试新权限是否正确。我对这部分不清楚。无论如何,一旦 nut 用户组在设备上读取和写入,它应该能够成功启动。

即使我将 USB 电缆移至其他端口,导致 lsusb 输出上出现不同的总线设备编号,udev rules.d 编辑仍可在我的 12.04.2 系统上工作。Udev 无需干预即可处理所有问题。事实上,我移动它时可能不需要重新启动,但我记不清了,将把这个测试留给别人。

答案2

  • 您可以使用它lsusb来查找总线和设备号

  • 然后更改设备的权限

    chmod 0666 /dev/bus/usb/[bus number]/[device number]
    

例如

$ lsusb
Bus 002 Device 004: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
$ chmod 0666 /dev/bus/usb/002/004

答案3

关于这个错误:

 failed to claim USB device: could not claim interface 0: Operation not permitted

NUT 常见问题解答http://www.networkupstools.org/docs/FAQ.html有这个(重点是我的):

如果 NUT 刚刚安装,且在安装 nut 时设备 USB 线已插入 [则] 只需拔下并重新插入 USB 线,然后重新启动即可。

那个技巧对我很有效。

答案4

如果您远离 UPS 的 USB 线(由于时间不足,几个月后才插入全新的 UPS 并进行配置),并且重新启动机器不是一种选择,那么您可以重新触发 udev 规则:

udevadm control --reload
udevadm trigger
systemctl restart nut-server

完成工作。

相关内容