जब USB डिवाइस कनेक्ट होता है तो स्क्रिप्ट को स्वचालित रूप से सक्रिय करने का एक तरीका है?


12

मेरे पास एक USB डिवाइस (POV कैमरा) है जो बहुत सारे डेटा को इकट्ठा करता है और नियमित रूप से इसके स्टोरेज को भरता है। लक्ष्य एक स्क्रिप्ट लिखना है कि:

  1. डिवाइस के लिए यूएसबी के माध्यम से कनेक्ट करने के लिए सुनता है
  2. इसे स्टोरेज डिवाइस के रूप में माउंट करता है
  3. डिवाइस से डाउनलोड डेटा
  4. सुरक्षित रूप से हटाने के लिए डिवाइस को अनमाउंट करता है (डाउनलोड पूरा होने पर)

मैं स्क्रिप्ट को बाद में स्थिति को इंगित करने के लिए GPIO पर कुछ पिनों से जुड़ी एल ई डी ब्लिंकिंग का विकल्प जोड़ सकता हूं ...

मैंने ubuntu और अन्य लिनक्स साइटों पर "कैसे एक usb डिवाइस से डेटा को स्वचालित रूप से डाउनलोड करने के लिए" के लिए खोज की है, लेकिन कोई परिणाम नहीं है। क्या कोई प्रारंभिक बिंदु प्रदान कर सकता है? मैं प्रलेखन और उदाहरणों से कोड लिखने के साथ सहज हूं।

जवाबों:


13

Udv नियमों का उपयोग करें ।

अपने डिवाइस की जानकारी प्राप्त करें।

udevadm -a -p /dev/path/device/

KERNELS=="1-3"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
...
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="SANDisk"
ATTRS{product}=="USB DISK"
ATTRS{serial}=="SD71011000019113"

फिर अपने डिवाइस के लिए अपनी udv रूल्स फाइल बनाएं। नियम फ़ाइल बनाते समय, आपको udevinfo कमांड से मिली जानकारी का उपयोग करें।

/etc/udev/rules.d/99-mydevice.rules की सामग्री

SUBSYSTEMS=="usb", ATTRS{serial}=="SD71011000019113", RUN+="/home/gurcan/sync.sh"

अपनी स्क्रिप्ट बनाएं जो USB डिवाइस से कनेक्टेड के रूप में चलेगी

#!/bin/bash
#
rsync -avz /media/disk/photos/ /data/photos/

रिलोड udv नियम

udevcontrol reload_rules

झसे आज़माओ। अनप्लग / प्लग


1
मैंने udvinfo को चलाने की कोशिश की, लेकिन -bash: udevinfo: command not foundssh शेल से प्रतिक्रिया मिली । मैंने जाँच की manऔर वहाँ के लिए एक manप्रविष्टि है udev, लेकिन नहीं udevinfo। मैं संभवतः इसके साथ आगे बढ़ने की कोशिश करूंगा udev... हालांकि आपका उत्तर मददगार था, इसलिए धन्यवाद! मैं आसपास udevinfoभी जांच करूंगा , शायद मैंने कोई भंडार या कुछ स्थापित नहीं किया है।
user3.1415927

1
@ user3.1415927 डेबिन में udevadm द्वारा प्रतिस्थापित udvinfo के कारण, मैंने अपना उत्तर अपडेट किया।
गुरुकान्टोर्कुर

2

यदि आपको udev पसंद नहीं है, तो आप devmon पर एक नज़र डाल सकते हैं ।

यह इन विकल्पों की अनुमति देता है:

--exec-on-device DEVICE "COMMAND" Execute COMMAND after mounting DEVICE --exec-on-label "LABEL" "COMMAND" Execute COMMAND after mounting LABEL --exec-on-video "COMMAND" Execute COMMAND after video DVD mount --exec-on-audio "COMMAND" Execute COMMAND after audio CD insertion --exec-on-disc "COMMAND" Execute COMMAND after data CD/DVD mount --exec-on-drive "COMMAND" Execute COMMAND after drive mount --exec-on-unmount "COMMAND" Execute COMMAND after unmount --exec-on-remove "COMMAND" Execute COMMAND after drive removal Where the following in COMMAND will be replaced with: %d mount point directory (eg /media/cd) %f device name (eg /dev/sdd1) %l label of mounted volume Multiple --exec-on-XXX options may be used to execute multiple commands. Other exec-on-XXX commands are ignored if exec-on-device or -label executed.

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