ปัญหาในการเริ่มต้นเครื่องมือเครือข่ายของ UPS ด้วย UPS 3S ของ Eaton


10

ใช้งานเซิร์ฟเวอร์ Ubuntu บน UPS ของ Eaton 3S 700VA การเชื่อมต่อ USB ของ Eaton อยู่ในเซิร์ฟเวอร์ Ubuntu ของฉัน ฉันพยายามใช้NUTเพื่อจัดการ 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)

คำตอบ:


10

ในขณะที่ฉันไม่ได้อ้างว่าเป็นผู้เชี่ยวชาญที่นี่ แต่ฉันกังวลว่าคำตอบนี้จะไม่ส่งผลให้มีการเปลี่ยนแปลงการอนุญาตให้เริ่มระบบใหม่และ / หรือสายเคเบิล USB จาก UPS ถูกย้ายไปยังพอร์ตอื่น

ข้อมูลต่อไปนี้จากที่นี่: Musings ของ Nannerpuss: น๊อต - เครื่องมือเครือข่าย UPS - บน Ubuntu

"... ปัญหาเกี่ยวข้องกับความจริงที่ว่า Ubuntu ติดตั้งอุปกรณ์เป็นเจ้าของโดย root แต่ nut daemon ลดลงในบัญชีที่ไม่มีสิทธิพิเศษที่ไม่มีการเข้าถึงที่จำเป็นการแก้ไขง่าย ๆ คือการใช้ udev เพื่อปรับการอนุญาตอุปกรณ์

เชื่อมต่ออุปกรณ์และ (ในฐานะรูท) เรียกใช้ lsusb และค้นหา จดบันทึก Bus และ 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"

กฎจะตรวจสอบการเพิ่มอุปกรณ์ USB กับผู้ขายและผลิตภัณฑ์ที่ตรงกับ UPS จากนั้นตั้งค่าโหมดเป็น 0660 และกลุ่มเป็น nut แทนที่จะเป็นรูตเริ่มต้น

โปรดทราบว่าคำตอบนี้ใช้ 660 สิทธิ์มากกว่า 666 เนื่องจากควรเพียงพอและปลอดภัยยิ่งขึ้น

โหลด udev (รีบูทหรืออาจจะถอดปลั๊กจากนั้นเสียบสายเคเบิล USB จาก UPS ที่พอร์ตพีซี) จากนั้นถอดและเชื่อมต่ออุปกรณ์ใหม่และทดสอบว่าสิทธิ์ใหม่ถูกต้อง ฉันไม่แน่ใจในส่วนนี้ ไม่ว่าในกรณีใด ๆ เมื่อกลุ่มผู้ใช้ nut มีการอ่านและเขียนบนอุปกรณ์ก็จะสามารถเริ่มต้นได้สำเร็จ

การแก้ไข udev rules.d ทำงานบนระบบ 12.04.2 ของฉันแม้ว่าฉันจะย้ายสายเคเบิล USB ไปยังพอร์ตอื่นทำให้เกิดหมายเลขอุปกรณ์บัสที่แตกต่างกันในเอาต์พุต lsusb Udev จัดการทั้งหมดโดยไม่มีการแทรกแซง ที่จริงแล้วฉันอาจไม่ต้องรีบูตเมื่อฉันย้ายมัน แต่จำไม่ได้แน่นอนและจะปล่อยให้การทดสอบนั้นกับคนอื่น


ฉันพบว่ามันใช้งานได้ดีสำหรับฉันด้วย APC Back-UPS CS 650 บน Ubuntu 12.04
พอลเกียร์

ไม่ควรรายงานสิ่งนี้ว่าเป็นข้อบกพร่องในอูบุนตู? และแก้ไขในแพคเกจน็อตอย่างเป็นทางการ?
Jarl

ใช้งานได้ แต่เลื่อนลงเล็กน้อยและอ่านข้อความ "ข้อผิดพลาดนี้ได้รับการแก้ไขแล้ว" ใหม่ (โดยเฉพาะ: /lib/udev/rules.d/62-nut-usbups.rulesติดตั้งแล้ว) หมายความว่าโซลูชันนี้ล้าสมัยทางเทคนิค
dannysauer

9
  • คุณสามารถใช้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 ได้รับการติดตั้งใหม่แล้วและหากสาย USB ของอุปกรณ์นั้นถูกเสียบอยู่แล้วเมื่อติดตั้ง nut [จากนั้น] เพียงแค่ถอดปลั๊กแล้วเสียบกลับสาย USB จากนั้นให้รีสตาร์ท nut

เคล็ดลับนั้นใช้ได้กับฉัน


ฉันต้องรีสตาร์ท udev ( sudo systemctl restart udev) จากนั้นถอดปลั๊ก / ถอดปลั๊ก UPS, FWIW
dannysauer

1

ในฐานะที่เป็น ndemou กล่าวว่าคำถามที่พบบ่อย NUT ตระหนักถึงปัญหาและแพทช์ที่ได้รับการปล่อยตัวออกมาแก้ไขข้อผิดพลาด แต่ distros มั่นคงเก่าอาจได้รับผลกระทบ หวังว่าวิธีแก้ปัญหาจะง่ายมาก ...

จากคำถามที่พบบ่อย NUT: "รองรับ USB ของฉัน แต่ไม่ทำงาน!" :

บน Linux มีการระบุกฎ udev เพื่อตั้งค่าการอนุญาตที่ถูกต้องในไฟล์อุปกรณ์ สิ่งนี้ทำให้ไดรเวอร์ NUT สามารถสื่อสารกับ UPS ผ่านไฟล์อุปกรณ์นี้ได้

อย่างไรก็ตามไดรเวอร์อาจยังไม่สามารถเริ่มและสนับสนุนอุปกรณ์ได้โดยมีข้อความเช่น:

ไม่สามารถอ้างสิทธิ์อุปกรณ์ USB: ไม่สามารถอ้างสิทธิ์อินเทอร์เฟซ 0: ไม่อนุญาตให้ใช้งาน

การดำเนินการที่ไม่ได้รับอนุญาตเป็นข้อความที่ชี้ไปที่ปัญหาของสิทธิ์ ปัญหาที่พบบ่อยที่สุดคือ udev ไม่ได้ใช้กฎจริง:

if NUT has been freshly installed,
and if the device USB cord was already plugged when installing NUT. 

ในกรณีนี้ให้ถอดปลั๊กและเสียบสาย USB จากนั้นรีสตาร์ท NUT

มีข้อผิดพลาดในการตั้งชื่อไฟล์กฎ NUT udev ซึ่งส่งผลให้กฎถูกแทนที่โดยไฟล์กำหนดค่า udev อื่น ขณะนี้ได้รับการแก้ไขแล้วในสาขาหลักของ Git การแจกจ่ายของคุณอาจได้รับผลกระทบ รายละเอียดมีอยู่ในปัญหา Github ต่อไปนี้: https://github.com/networkupstools/nut/issues/140

การดูเพิ่มเติมเกี่ยวกับปัญหา Github ให้การแก้ปัญหาแก่ฉัน:

กฎ udev ใช้งานช้าเกินไป (ลำดับความสำคัญ 52) ส่งผลให้มีการเขียนทับสิทธิ์ของน็อต ผลลัพธ์สุดท้ายก็คือไดรเวอร์ไม่เริ่มทำงานและการเชื่อมต่อกับไดรเวอร์ / UPS จะรายงานโดย upsd และ upsmon

การแก้ไขคือการตั้งลำดับความสำคัญเป็น 62 โดยการเปลี่ยนชื่อไฟล์กฎ:

$ mv /lib/udev/rules.d/{5,6}2-nut-usbups.rules

ข้อบกพร่องนี้มีผลต่อ:

Debian: http://bugs.debian.org/721600
Fedora / Redhat: https://bugzilla.redhat.com/show_bug.cgi?id=488368
Ubuntu: https://bugs.launchpad.net/debian/+source/nut/+bug/1099947 and probably all Linux distribution

0

หากคุณอยู่ห่างจากสาย USB ของ UPS ของคุณ (ต่อกับ UPS ใหม่สดและทำการกำหนดค่าเดือนต่อมาเพราะคุณไม่มีเวลา) และการรีสตาร์ทเครื่องของคุณไม่ใช่ตัวเลือกคุณสามารถเรียกใช้กฎ udev:

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

ทำงานหรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.