जब एक नया USB संग्रहण डिवाइस का पता लगाया जाता है, तो शेल स्क्रिप्ट को कैसे चलाया जाता है?


17

मैं एक स्क्रिप्ट चाहता हूं जो लॉग को डंप करता है और जैसे ही एक usb मास स्टोरेज प्लग किया जाता है (उस पर फ़ाइल 'OKdump' के साथ) लॉग ऑन करना शुरू कर देता है। और अगर कुछ भी असामान्य हो (जैसे कोई त्रुटि जो नेत्रहीन मौजूद है) का पता लगाया जाना चाहिए। यह एक स्क्रीनशॉट लेने के लिए और एक ही ड्राइव पर इसे बचाने के लिए है।

जवाबों:


13

उदेव का प्रयोग करें। उदय एक डिवाइस मैनेजर डेमन है। अन्य चीजों के बीच यह आपके उपकरणों के नामकरण के लिए जिम्मेदार है। आप नियमों की निर्देशिका में एक निश्चित वाक्यविन्यास के साथ फाइल डालकर udev-rules को परिभाषित कर सकते हैं। नियम कई काम कर सकते हैं - विशेष रूप से वे स्क्रिप्ट चला सकते हैं, जब एक निश्चित डिवाइस जुड़ा होता है।

अपनी समस्या को कैसे हल करें:

सबसे पहले आपको अपने डिवाइस पर जानकारी एकत्र करने की आवश्यकता है। मान लीजिए कि आपने इसे कनेक्ट किया है, और यह जानते हैं कि यह नाम के अंतर्गत आता है /dev/sdb1। यदि ऐसा है तो चलाएं:

udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)

कमांड आपके डिवाइस के बारे में जानकारी आउटपुट करेगा। यह एक लंबा लंबा है। आपको कुछ ऐसा खोजने की आवश्यकता है जो डिवाइस को विशिष्ट रूप से पहचानती है। यह एक धारावाहिक जैसा ATTRS{serial}=="UA04FLGC"या अन्य विशेषताओं का संयोजन हो सकता है जैसे कि ATTRS{idVendor}और ATTRS{idProduct}। अधिकांश नाम कमोबेश स्व व्याख्यात्मक हैं। एक या कुछ का एक संयोजन चुनें जो उचित लगता है - यदि वे काम नहीं करते हैं, तो कुछ और प्रयास करें।

एक बार जब आप एक अद्वितीय पहचानकर्ता पा लेते हैं तो एक फाइल बनाते हैं जो /etc/udev/rules.dदो अंकों से शुरू होती है और साथ समाप्त होती है .rules। दो अंक इन .rules-files को संसाधित करने के क्रम को निर्दिष्ट करते हैं - 70-usb-log-custom.rulesआपके लिए एक अच्छा विकल्प होना चाहिए। इस नियम फ़ाइल का सिंटैक्स बहुत जटिल हो सकता है। यदि आप रुचि रखते हैं, तो Google udev। यदि केवल नई बनाई गई फ़ाइल को न खोलें और इसे कुछ इस तरह से देखने के लिए संपादित करें:

# /etc/udev/rules.d/70-usb-log-custom.rules

KERNEL=="sd?1", ATTRS{serial}=="UA04FLGC", ACTION=="add", SYMLINK+="cusb1", RUN+="/home/confus/bin/usb-encrypt.sh add %k"
ENV{ID_FS_USAGE}=="crypto", ACTION=="remove", RUN+="/home/confus/bin/usb-encrypt.sh remove %k"
SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"

यह एक वास्तविक udv फ़ाइल है जिसका मैं उपयोग कर रहा हूं। इसके तीन नियम हैं। हर लाइन का अपना एक नियम है। जब भी एन्क्रिप्टेड डिस्क कनेक्ट होती है, तो पहली पंक्ति डिक्रिप्टेड डिवाइस बनाने के लिए एक स्क्रिप्ट चलाती है। दूसरी पंक्ति उसी स्क्रिप्ट को आमंत्रित करती है जिसमें अलग-अलग विकल्पों के साथ डिक्रिप्ट किए गए डिवाइस को हटा दिया जाता है। तीसरी पंक्ति किसी अन्य संबंधित डिवाइस के लिए अनुमतियाँ सेट करती है।

सबसे अधिक संभावना है कि आपको केवल पहली पंक्ति की आवश्यकता होगी। बाकी को हटाएं और सही सीरियल डालें (या अपने डिवाइस की पहचान करने के लिए आपके द्वारा चुने गए मापदंडों का संकलन)।

मेरी फाइल का स्पष्टीकरण:

KERNEL=="sd?1"कहते हैं कि जिस डिवाइस को हम इस नियम के लिए देख रहे हैं उसका नाम रेखा है /dev/sda1, /dev/sdc1या ऐसा कुछ। प्रश्नचिह्न किसी भी पत्र के लिए एक वाइल्डकार्ड है। ATTRS{serial}=="UA04FLGC"यहाँ अद्वितीय पहचानकर्ता है। अन्य डिवाइस के लिए मैं (तीसरी लाइन) मैं सीरियल नंबर लेकिन के संयोजन का उपयोग नहीं कर रहा हूँ के बारे में बात कर रहा था SYSFS{idVendor}=="1781"और SYSFS{idProduct}=="0c9f"यह पहचान करने के लिए।

ACTION=="add"नियम बताता है कि यह केवल तभी काम करना चाहिए जब डिवाइस को जोड़ा जाता है; जब इसे हटाया नहीं जाता है।

SYMLINK+="cusb1"डिस्क के लिए एक सिमलिंक बनाता है ताकि कोई इसे खोज सके /dev/cusb1

RUN+="/home/confus/bin/usb-encrypt.sh add %k" स्क्रिप्ट चलाता है और इसे 'ऐड' और '% k' (डिवाइस का नाम) पास करता है।

मैं अधिक विस्तार नहीं दूंगा, क्योंकि udv नियमों पर उत्कृष्ट ट्यूटोरियल हैं। यद्यपि आप यहाँ पढ़ते हैं, हालांकि घूरने के लिए पर्याप्त होना चाहिए।


उत्कृष्ट उत्तर लेकिन मुझे अब एक स्क्रिप्ट चाहिए जो लॉगिंग करती है
अमिथ केके

4
तब आपको इसे लिखना होगा या इसके बारे में अधिक विशिष्ट होना चाहिए कि आप क्या चाहते हैं। जैसे मैं नहीं देखता कि एक स्क्रीनशॉट आपको क्या बताएगा। इसके अलावा 'सिस्टम लॉग्स को डंप' कहां से करें? 'कुछ भी असामान्य' एक विस्तृत अवधि के रूप में अच्छी तरह से है। हम आपकी व्यक्तिगत सेना नहीं हैं - यदि आप बैश-स्क्रिप्टिंग के बारे में एक-दो चीजें जानते हैं तो अब आपके पास वे सभी उपकरण हैं जो आपको स्क्रिप्ट लिखने की आवश्यकता है।
con-f-use

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