插入或拔出 USB 设备后自动运行脚本

Rad*_*anu 26 scripts usb mount automation unmount

在安装/插入或卸载/拔出 USB 设备后,如何自动运行脚本?

Sad*_*adi 19

感谢MinimusHeximus和他在对我的类似问题的评论中提到的线程的相应贡献者,我想我现在可以为您提供以下答案。

对于这样的 USB 设备,您需要 5(五个)文件,如下所示,只需填写相应的值<fortheseparts>

/etc/udev/rules.d/00-usb-<yourdevice>.rules

ACTION=="add", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-in_udev"    
ACTION=="remove", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-out_udev"
Run Code Online (Sandbox Code Playgroud)

/usr/local/bin/usb-<yourdevice>-in_udev

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-in &
Run Code Online (Sandbox Code Playgroud)

/usr/local/bin/usb-<yourdevice>-in

#!/bin/bash
sleep 1
<yourbashscriptcode>
Run Code Online (Sandbox Code Playgroud)

/usr/local/bin/usb-<yourdevice>-out_udev

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-out &
Run Code Online (Sandbox Code Playgroud)

/usr/local/bin/usb-<yourdevice>-out

#!/bin/bash
sleep 1
<yourbashscriptcode>
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 您可以捕获这些值<yourvendorid><yourproductid>通过lsusb在终端中输入命令- 当您的 USB 设备插入时 - 这将列出您当前可用的所有 USB 设备,例如Bus 003 Device 002: ID 8087:07da Intel Corp.,其中8087VendorID07daProductID
  2. 并且<yourdevice>可以是您可以为 USB 设备选择的任意名称,例如,在为我的 USB 键盘创建此类文件时,我选择使用通用名称“键盘”,这需要在插入时应用不同的键盘布局。
  3. 在某些情况下,它可能没有必要使用ACTION=="remove"在udev规则文件中的行,因此相关的2(二)“ out”的文件,当你不需要做任何事情(如反向时,该设备是由变化插入)后设备拔出。