ฉันใช้ Linux Mint 13 MATE และฉันพยายามตั้งค่าการแจ้งเตือนเมื่อฉันเสียบ / ถอดปลั๊กอุปกรณ์
ก่อนอื่นฉันพบแพ็คเกจudev-alertแต่น่าเสียดายที่มันใช้งานไม่ได้สำหรับฉัน: มันใช้งานได้ในเวลาน้อยมาก (1-2 นาที) จากนั้นถ้าฉันเชื่อมต่อ / ตัดการเชื่อมต่ออุปกรณ์ใด ๆ ก็เกิดปัญหา:
Traceback (most recent call last):
File "./udev-notify.py", line 319, in <module>
notification.show()
glib.GError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name :1.1061 was not provided by any .service files
ฉันไม่พบวิธีแก้ไขปัญหาดังนั้นฉันจึงต้องลบมันออก (ยื่นรายงานข้อบกพร่องด้วย)
น่าแปลกที่ไม่มีสาธารณูปโภคที่คล้ายกันที่ฉันพบมา จากนั้นฉันพยายามเขียนกฎ udev ที่ควรตรงกับอุปกรณ์ทั้งหมด ฉันได้เพิ่มไฟล์ใหม่/etc/udev/rules.d/notify.rules
:
ACTION=="add", RUN+="/bin/bash /home/dimon/tmp/device_plug.sh"
ACTION=="remove", RUN+="/bin/bash /home/dimon/tmp/device_unplug.sh"
และสองสคริปต์:
device_plug.sh:
#!/bin/bash
export DISPLAY=":0"
notify-send "device plugged"
/usr/bin/play -q /path/to/plug_sound.wav &
device_unplug.sh:
#!/bin/bash
export DISPLAY=":0"
notify-send "device unplugged"
/usr/bin/play -q /path/to/unplug_sound.wav &
มันใช้งานได้ แต่ใช้งานได้โง่มาก คำถามของฉันคือ:
- วิธีรับชื่อจริงของอุปกรณ์ที่เชื่อมต่อเช่นเดียวกับที่ฉันเห็นใน
lsusb
เอาต์พุต ขณะนี้ฉันเพิ่งได้รับการแจ้งเตือนเช่น "เสียบ" และ "ถอดปลั๊ก" และฉันไม่สามารถค้นหาชื่อของอุปกรณ์ในกฎ udev ของฉันได้ (ถ้าทำได้ฉันจะส่งไปยังสคริปต์ของฉันเป็น พารามิเตอร์) - ขณะนี้มีการเปิดใช้งานการแจ้งเตือนมากเกินไป บอกว่าเมื่อฉันต่ออุปกรณ์ USB ของฉันฉันได้รับการแจ้งเตือนประมาณ 15 ครั้ง! แต่ถ้าฉันใช้
lsusb
งานอุปกรณ์ USB ที่เชื่อมต่อจะปรากฏเป็นอุปกรณ์เดียว ดังนั้นดูเหมือนว่าฉันควรเพิ่มอาร์กิวเมนต์เพิ่มเติมในกฎตัวกรอง แต่ฉันไม่สามารถหาได้ - อาจมีวิธีแก้ปัญหาที่ดีกว่าสำหรับการแจ้งเตือนการถอดปลั๊ก / ถอดปลั๊กอุปกรณ์? กรุณาแนะนำถ้าคุณรู้อะไรบางอย่าง
pyudev
เพื่อรับการแจ้งเตือนและไม่ต้องใช้สคริปต์/etc/udev
เพิ่มเติม