আমি udev
একটি ওয়্যারলেস কার্ড সংযুক্ত হওয়ার সাথে সাথে দেবিয়ান সিস্টেমটিকে ব্যাশ স্ক্রিপ্ট চালানোর জন্য ব্যবহার করার চেষ্টা করছি ।
এখন পর্যন্ত আমি এই ফাইলটি তৈরি করেছি /etc/udev/rules.d/wifi-detect.rules
:
ACTION=="add", ATTRS{idVendor}=="0cf3", ATTRS{idProduct}=="9271", RUN+="/root/test.sh"
এবং আপাতত, আমি test.sh
এই বিষয়বস্তুর কাজটি তৈরির চেষ্টা করছি :
#!/bin/bash
/bin/echo "test!" > /test.txt
তবে কোনও কারণে, আমি যখন ওয়্যারলেস কার্ডটি সংযুক্ত করি তখন কোনও ফাইলই তৈরি হয় না বলে মনে হয় test.txt
।
আমার lsusb
কার্ডে:
Bus 001 Device 015: ID 0cf3:9271 Atheros Communications, Inc. AR9271 802.11n
চলমান udevadm monitor –env
এটি কি ঘটেছিল যখন আমি কার্ড সংযোগ হল:
KERNEL[1017.642278] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3 (usb)
KERNEL[1017.644676] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0 (usb)
KERNEL[1017.645035] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/firmware/1-1.3 (firmware)
KERNEL[1017.708056] remove /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/firmware/1-1.3 (firmware)
UDEV [1017.714772] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3 (usb)
UDEV [1017.733002] remove /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/firmware/1-1.3 (firmware)
UDEV [1017.772669] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/firmware/1-1.3 (firmware)
UDEV [1017.798707] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0 (usb)
KERNEL[1018.456804] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/ieee80211/phy8 (ieee80211)
KERNEL[1018.465994] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/net/wlan0 (net)
KERNEL[1018.479878] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/leds/ath9k_htc-phy8 (leds)
KERNEL[1018.483074] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/usb_device/usbdev1.20 (usb_device)
UDEV [1018.600456] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/leds/ath9k_htc-phy8 (leds)
UDEV [1018.604376] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/ieee80211/phy8 (ieee80211)
UDEV [1018.626243] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/usb_device/usbdev1.20 (usb_device)
KERNEL[1018.659318] move /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/net/wlan1 (net)
UDEV [1018.758843] add /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/net/wlan1 (net)
UDEV [1018.932207] move /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/net/wlan1 (net)
আমি চারপাশে অনেক উদাহরণ চেষ্টা করেছি কিন্তু আমি এটি কার্যকর করতে পারি না। আমি আশা করি এটির সাহায্যে কেউ আমাকে সহায়তা করতে পারে;) আপনাকে ধন্যবাদ!
সম্পাদনা করুন:
জিনিস সহজ করার জন্য, আমি আমার নিয়মটি এতে পরিবর্তন করেছি:
ACTION=="add", ATTRS{idVendor}=="0cf3", ATTRS{idProduct}=="9271", RUN+="/bin/echo 'test' > /test.txt"
আমি udevadm control --log-priority=info
@ ব্যবহারকারী 1146332 এর প্রস্তাবিত হিসাবে সেট করতে পেরেছি এবং আমি এই আকর্ষণীয় লগ পেয়েছি:
Sep 9 16:27:53 iklive-rpi1 udevd[1537]: RUN '/bin/echo 'test' > /test.txt' /etc/udev/rules.d/wifi-detect.rules:1
Sep 9 16:27:53 iklive-rpi1 udevd[1544]: starting 'firmware.agent'
Sep 9 16:27:53 iklive-rpi1 udevd[126]: seq 663 queued, 'remove' 'firmware'
Sep 9 16:27:53 iklive-rpi1 udevd[126]: seq 663 forked new worker [1547]
Sep 9 16:27:53 iklive-rpi1 udevd[1537]: 'firmware.agent' [1544] exit with return code 0
Sep 9 16:27:53 iklive-rpi1 udevd[1548]: starting '/bin/echo 'test' > /test.txt'
Sep 9 16:27:53 iklive-rpi1 udevd[1547]: seq 663 running
Sep 9 16:27:53 iklive-rpi1 udevd[1547]: no db file to read /run/udev/data/+firmware:1-1.3.4: No such file or directory
Sep 9 16:27:53 iklive-rpi1 udevd[1547]: passed -1 bytes to netlink monitor 0x1af5ee0
Sep 9 16:27:53 iklive-rpi1 udevd[126]: seq 663 done with 0
Sep 9 16:27:53 iklive-rpi1 udevd[1547]: seq 663 processed with 0
Sep 9 16:27:53 iklive-rpi1 udevd[1537]: '/bin/echo 'test' > /test.txt'(out) 'test > /test.txt'
Sep 9 16:27:53 iklive-rpi1 udevd[1537]: '/bin/echo 'test' > /test.txt' [1548] exit with return code 0
সুতরাং ... return code 0
সফল সমাপ্তির জন্য কি প্রস্থান কোড নয় ? যদি তাই হয় তবে কেন আমি সিস্টেমে কোনও ফাইল পাই না?
সম্পাদনা 2:
আমি @ htor দ্বারা টিপটি ব্যবহার করে এই কাজটি পরিচালনা করতে সক্ষম হয়েছি। আমার বর্তমান নিয়ম:
ACTION=="add", ATTRS{idVendor}=="0cf3", ATTRS{idProduct}=="9271", RUN+="/bin/sh -c '/bin/echo test >> /test.txt'"
কিন্তু কোনও কারণে কমান্ডটি 8 বারের মতো কার্যকর করা হয়েছে, এটি এড়াতে কি কোনও উপায় আছে? আমি মনে করি এটি ঘটছে কারণ ওয়্যারলেস কার্ড ড্রাইভাররা যখন লোড হচ্ছে তখন তাদের কার্যত আনমাউন্ট এবং কার্ডটি মাউন্ট করার প্রয়োজন। পরামর্শ?
/bin/echo
আপনার লগের পরামর্শ অনুযায়ী সফলভাবে কার্যকর করা হয়েছিল। আপনার কমান্ডের আউটপুটটিtest > /test.txt
আপনার লগের রাজ্যগুলির মতো। এর কারণ হ'ল,>
আপনার প্রসঙ্গে চরিত্রটির কোনও বিশেষ অর্থ নেই। এটি কেবলমাত্র তৃতীয় কমান্ড লাইন যুক্তি যা আপনি পাশ করেছেনecho
। আপনি যদি শেলকে প্রদত্ত রেখার অর্থ ব্যাখ্যা করতে দেন তবে আপনি যা চান তা পাবেন/bin/echo 'test' > /test.txt
। যেমনটি আপনি নিজের দ্বিতীয় সম্পাদনায় করেছেন। উদাহরণস্বরূপ, আপনি যা করেছেন তার বিপরীতে যদি আপনিudev
নির্বাহtouch /test.txt
করতে দেন তবে আপনি আপনার মূলটিতে একটি নতুন ফাইল দেখতে পাবেন।