किसी विशिष्ट वॉल्यूम से कनेक्ट होने पर किसी क्रिया को ट्रिगर करना


10

मेरे पास एक USB कुंजी है जिसमें मेरा Keepass2 पासवर्ड डेटाबेस है और मैं अपने कंप्यूटर में प्लग किए जाने पर कुछ क्रियाएं करना चाहूंगा, अर्थात्:

  • इसे कुछ विशिष्ट स्थान पर ऑटो-माउंट करें
  • जब माउंटिंग ठीक से किया जाता है, तो पासवर्ड डेटाबेस फ़ाइल पर Keepass2 लॉन्च करना

सरल कार्य जो मुझे लगता है, लेकिन मैं यह नहीं कर सकता कि ऐसा कैसे करें।

मैं Ubuntu 12.10 का उपयोग कर रहा हूं, और यह डिवाइस को "मीडिया यूएसबी-की" के रूप में ऑटो-माउंट करता है और इस पर छवियां खोलने की कोशिश करता है (भले ही कोई भी न हो)।

ऐसा करने और ubuntu ऑटो-माउंटिंग को अक्षम करने का सबसे अच्छा तरीका क्या है (इसलिए यह संघर्ष नहीं करता है)?

जवाबों:


8

जब कोई नया उपकरण दिखाई देता है, तो udev को सूचित किया जाता है। यह सामान्य रूप से /devअंतर्निहित रूल्स के आधार पर डिवाइस फ़ाइल बनाता है । आप डिवाइस फ़ाइल स्थान को बदलने या एक मनमाना कार्यक्रम चलाने के लिए इन नियमों को ओवरराइड कर सकते हैं। यहाँ इस तरह के udev नियम का एक नमूना दिया गया है:

KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"

NAME=निर्देश उपकरण फ़ाइल का स्थान बदलता है, मैं इसे समझाने के उद्देश्य से शामिल है, लेकिन यह शायद आपके उपयोग के मामले के लिए उपयोगी नहीं है। ATTRSनियम डिवाइस की पहचान; चलाने udevinfo -a -n /dev/sdzजब ड्राइव उपलब्ध है के रूप में /dev/sdzक्या गुण यह है देखने के लिए। सावधान रहें कि आप केवल इनपुट के ATTRSएक खंड से नियमों का udevinfoउपयोग कर सकते हैं (इसके अलावा, आप ATTRप्रारंभिक अनुभाग से नियमों का उपयोग कर सकते हैं )। अधिक पृष्ठभूमि के लिए `udevadm जानकारी -a -n / dev / sdb` का आउटपुट देखें । यह नियम एक फाइल में जाता है जिसे कुछ कहा जाता है /etc/udev/rules.d/local-storage-keypass.rules

RUNनिर्देश में दी गई स्क्रिप्ट में आप जो कमांड चलाना चाहते हैं, उसे डालें । कुछ इस तरह:

#!/bin/sh
set -e
if [ -d /media/keypass-drive ]; then
  [ "$(df -P /media/keypass-drive | awk 'NR==2 {print $1}')" = "$(df -P /media | awk 'NR==2 {print $1}')" ]
else
  mkdir /media/keypass-drive
fi
mount "$1" /media/keypass-drive
su ereon -c 'keypass2' &

यदि आपको udev से शुरू की गई स्क्रिप्ट से GUI प्रोग्राम चलाने में समस्या हो रही है, तो क्या मैं रूट के रूप में किसी अन्य उपयोगकर्ता के डेस्कटॉप पर ग्राफ़िकल प्रोग्राम लॉन्च कर सकता हूं?

¹ आधुनिक सिस्टम पर नहीं जहां /devudvtmpfs पर है।


1
इस पर महत्वपूर्ण ध्यान दें: जब जानकारी का उपयोग करते हुए नियम लिखते हैं udevadm info -a -n /dev/sdX, तो आप कई पूर्वजों के आधार पर मेल नहीं खा सकते हैं। आप केवल डिवाइस से डेटा, और एकल पूर्वज पर आधारित मिलान कर सकते हैं। यह कवर किया गया है man 7 udev, लेकिन आसानी से अनदेखी की गई एक छोटी टिप्पणी है।
पैट्रिक

1

ऐसा करने का सबसे अच्छा तरीका इस उपकरण के लिए अपना स्वयं का नियम लिखना होगा। दुर्भाग्य से मैं यह करने के लिए कोई सुझाव नहीं दे सकता कि मैंने ऐसा कैसे किया है। इसलिए जब तक किसी और के पास अधिक विस्तृत उत्तर न हो, 'udev रूल्स' के लिए Google और उदाहरणों के लिए / lib / udev देखें। आपके कस्टम udev नियम /etc/udev/rules.d में जाने चाहिए


जानकारी के लिए धन्यवाद। यह कम से कम मेरी खोजों को अधिक कुशल बना देगा।
ेरेऑन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.