যখন কোনও ইউএসবি ডিভাইস সংযুক্ত হয় তখন কোনও স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে সক্রিয় করার কোনও উপায় আছে?


12

আমার কাছে একটি ইউএসবি ডিভাইস (পিওভি ক্যামেরা) রয়েছে যা নিয়মিতভাবে তার স্টোরেজটি পূরণ করে প্রচুর ডেটা সংগ্রহ করে। লক্ষ্যটি একটি স্ক্রিপ্ট লিখতে হয় যা:

  1. ইউএসবির মাধ্যমে সংযোগ করার জন্য ডিভাইসটির তালিকান
  2. এটি স্টোরেজ ডিভাইস হিসাবে মাউন্ট করে
  3. ডিভাইস থেকে ডেটা ডাউনলোড করে
  4. অপসারণের জন্য ডিভাইসটি নিরাপদে আনমাউন্ট করে (ডাউনলোড শেষ হওয়ার পরে)

আমি পরে স্ক্রিপ্টে যুক্ত করতে পারি জিপিআইওতে নির্দিষ্ট পিনের সাথে সংযুক্ত এলইডি জ্বলজ্বল করার বিকল্পটি স্থিতি নির্দেশ করতে ...

আমি উবুন্টু এবং অন্যান্য লিনাক্স সাইটে "কীভাবে একটি ইউএসবি ডিভাইস থেকে স্বয়ংক্রিয়ভাবে ডেটা ডাউনলোড করব" অনুসন্ধান করেছি, তবে কোনও ফলাফল নেই। কেউ কি একটি সূচনা পয়েন্ট দিতে পারে? ডকুমেন্টেশন এবং উদাহরণগুলি থেকে কোড লেখার ক্ষেত্রে আমি আরামদায়ক।

উত্তর:


13

Udev নিয়ম ব্যবহার করুন ।

আপনার ডিভাইসের তথ্য সন্ধান করুন।

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"

তারপরে আপনার ডিভাইসের জন্য আপনার udev নিয়ম ফাইল তৈরি করুন। নিয়ম ফাইল তৈরি করার সময়, udevinfo কমান্ড থেকে প্রাপ্ত তথ্য ব্যবহার করুন।

/etc/udev/rules.d/99-mydevice.rules এর সামগ্রী

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

আপনার স্ক্রিপ্ট তৈরি করুন যা ইউএসবি ডিভাইস সংযুক্ত হিসাবে চলবে

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

ওদেব বিধিগুলি পুনরায় লোড করুন

udevcontrol reload_rules

এটা পরীক্ষা করো. আন-প্লাগ / প্লাগ


1
আমি udevinfo চালানোর চেষ্টা করেছি, তবে -bash: udevinfo: command not foundssh শেল থেকে একটি প্রতিক্রিয়া পেয়েছি । আমি চেক manএবং সেখানে একটি হল manজন্য এন্ট্রি udev, কিন্তু না জন্য udevinfo। আমি সম্ভবত এটি দিয়ে চেষ্টা করার চেষ্টা করব udev... যদিও আপনার উত্তরটি সহায়ক ছিল, তাই ধন্যবাদ! আমিও চেক করতে চারপাশে udevinfoতাকাব, সম্ভবত আমি কোনও সংগ্রহস্থল বা কিছু ইনস্টল না করে রেখেছি।
ব্যবহারকারী3.1415927

1
@ user3.1415927 কারণ দেবদেবীতে udevadm দ্বারা প্রতিস্থাপন udevinfo, আমি আমার উত্তর আপডেট করেছি।
gurcanozturk

2

আপনি যদি উদেব পছন্দ না করেন তবে আপনি ভক্তদের দিকে নজর দিতে পারেন

এটি এই বিকল্পগুলির অনুমতি দেয়:

--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.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.