मैं लिनक्स मिंट 13 मेट का उपयोग करता हूं, और जब मैं प्लग / अनप्लग उपकरणों को नोटिफाई करने का प्रयास कर रहा हूं।
सबसे पहले, मैंने udv-अधिसूचित पैकेज पाया , लेकिन दुर्भाग्य से यह लगभग मेरे लिए काम नहीं करता है: यह बहुत कम समय (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
संलग्न यूएसबी स्टिक को केवल एक उपकरण के रूप में प्रदर्शित किया जाता है। इसलिए, ऐसा लगता है कि मुझे नियम फ़िल्टर करने के लिए कुछ और तर्क जोड़ना चाहिए, लेकिन मैं इसे नहीं खोज सकता। - संभवतः डिवाइस प्लग / अनप्लग सूचनाओं के लिए कुछ बेहतर समाधान है? कृपया सुझाव दें कि क्या आपको कुछ पता है।
pyudev
अधिसूचित होने के लिए उपयोग करता है, और इसमें अतिरिक्त स्क्रिप्ट की आवश्यकता नहीं होती है/etc/udev
।