มีวิธีการเปิดใช้งานสคริปต์โดยอัตโนมัติเมื่ออุปกรณ์ USB เชื่อมต่อหรือไม่


12

ฉันมีอุปกรณ์ USB (กล้อง POV) ที่รวบรวมข้อมูลจำนวนมากเติมการจัดเก็บข้อมูลเป็นประจำ เป้าหมายคือการเขียนสคริปต์ที่:

  1. รับฟังอุปกรณ์เพื่อเชื่อมต่อผ่าน USB
  2. เมาท์มันเป็นอุปกรณ์จัดเก็บข้อมูล
  3. ดาวน์โหลดข้อมูลจากอุปกรณ์
  4. เลิกเมานท์อุปกรณ์อย่างปลอดภัยเพื่อนำออก (เมื่อดาวน์โหลดเสร็จสิ้น)

ฉันสามารถเพิ่มสคริปต์ในภายหลังตัวเลือกสำหรับการกะพริบไฟ LED ที่ติดอยู่กับพินที่แน่นอนบน GPIO เพื่อระบุสถานะ ...

ฉันค้นหา "วิธีดาวน์โหลดข้อมูลจากอุปกรณ์ usb โดยอัตโนมัติ" บน Ubuntu และไซต์อื่น ๆ ของ linux แต่ไม่มีผลลัพธ์ ทุกคนสามารถให้จุดเริ่มต้นได้หรือไม่ ฉันพอใจกับการเขียนโค้ดจากเอกสารและตัวอย่าง

คำตอบ:


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 rules สำหรับอุปกรณ์ของคุณ เมื่อสร้างไฟล์กฎใช้ข้อมูลที่คุณได้รับจากคำสั่ง 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/

โหลดกฎ udev อีกครั้ง

udevcontrol reload_rules

ทดสอบมัน ถอดปลั๊ก / ปลั๊ก


1
ฉันพยายามเรียกใช้ udevinfo แต่ได้รับการ-bash: udevinfo: command not foundตอบสนองจาก ssh shell ฉันจะตรวจสอบmanและมีmanรายการสำหรับแต่ไม่ได้สำหรับudev udevinfoฉันอาจจะพยายามติดตามสิ่งนี้ด้วยudev... คำตอบของคุณมีประโยชน์ แต่ขอบคุณมาก! ฉันจะดูรอบ ๆ เพื่อตรวจสอบudevinfoเช่นกันบางทีฉันยังไม่ได้ติดตั้งที่เก็บหรืออะไร
user3.1415927

1
@ user3.1415927 เนื่องจาก udevinfo ถูกแทนที่ด้วย udevadm ใน debian ฉันจึงอัปเดตคำตอบของฉัน
gurcanozturk

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.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.