linux - UDEV - 在插入的 USB 闪存驱动器上运行程序

标签 linux udev usb-flash-drive

<分区>

我试图让一个脚本在任何 USB 闪存驱动器(不仅仅是特定的)插入系统时运行,我已经断断续续地拉扯我的头发大约 2 周,试图弄清楚它出去。有谁能够帮我? (如果有帮助,运行 Ubuntu)。

我至少需要能够传递驱动器序列号和开发路径 (/dev/sd**)。

最佳答案

首先你需要你的规则来检测USB存储设备

/etc/udev/rules.d/10-usbmount.rules:

KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", RUN+="/usr/bin/usbdevinserted"

这将运行我们自定义的可执行 shell 脚本 /usr/bin/usbdevinserted:

#!/bin/bash

set 2>&1 >> /tmp/usbdevinfo

此示例脚本转储环境变量,您需要知道找到了哪个设备,例如:

DEVLINKS='/dev/disk/by-id/usb-Generic_USB_Flash_Disk-0:0 /dev/disk/by-path/pci-0000:00:13.2-usb-0:2:1.0-scsi-0:0:0:0'
DEVNAME=/dev/sdk
DEVPATH=/devices/pci0000:00/0000:00:13.2/usb2/2-2/2-2:1.0/host29/target29:0:0/29:0:0:0/block/sdk
DEVTYPE=disk
ID_BUS=usb
ID_FS_TYPE=
ID_INSTANCE=0:0
ID_MODEL=USB_Flash_Disk
ID_MODEL_ENC='USB\x20Flash\x20Disk\x20\x20'
ID_MODEL_ID=9380
ID_PART_TABLE_TYPE=dos
ID_PART_TABLE_UUID=61d1df0b
ID_PATH=pci-0000:00:13.2-usb-0:2:1.0-scsi-0:0:0:0
ID_PATH_TAG=pci-0000_00_13_2-usb-0_2_1_0-scsi-0_0_0_0
ID_REVISION=7.76
ID_SERIAL=Generic_USB_Flash_Disk-0:0
ID_TYPE=disk
ID_USB_DRIVER=usb-storage
ID_USB_INTERFACES=:080650:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Generic
ID_VENDOR_ENC='Generic\x20'
ID_VENDOR_ID=058f
MAJOR=8
MINOR=160
SUBSYSTEM=block

关于linux - UDEV - 在插入的 USB 闪存驱动器上运行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20084740/

相关文章:

linux - 在 Linux 中阻止 USB HID

linux - uevents如何在内核中被触发

linux - udev usb 每次都不同的路径

Python 关闭一个闪存驱动器,如何启动 IDLE?

linux - 奇怪的 gcc 链接器搜索路径

c++ - 如何使用setenv函数?

linux - 如何使用 C++ 代码中的 setsockopt() 调用更改 TCP 拥塞控制算法

c++ - 如何读取 C++ 中 system() 调用的结果?

linux - 如何区分USB硬盘和U盘?

android - 如何找到挂载到android的USB路径?