当前位置: 首页>>技术教程>>正文


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

, , , ,

问题描述

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

最佳答案

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

对于这样的 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"

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

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-in &

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

#!/bin/bash
sleep 1
<yourbashscriptcode>

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

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-out &

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

#!/bin/bash
sleep 1
<yourbashscriptcode>

笔记:

  1. 您可以通过在终端中输入命令 lsusb 来捕获值 <yourvendorid><yourproductid> – 当您的 USB 设备插入时 – 这将列出您当前可用的所有 USB 设备,例如 Bus 003 Device 002: ID 8087:07da Intel Corp. ,其中 8087 是 VendorID,07da 是 ProductID。 \n

  2. <yourdevice> 可以是您为 USB 设备选择的任意名称,例如,在为我的 USB 键盘创建此类文件时,我选择使用通用名称 “keyboard”,这需要在插入时应用不同的键盘布局。\n

  3. 在某些情况下,可能不需要在 udev 规则文件中使用 ACTION==”remove” 行,因此当您不需要执行任何操作(例如反向插入设备时所做的更改)在设备拔出后。\n

  4. 一些显示管理器将 .Xauthority 存储在用户主目录之外。您将需要相应地更新 ENV{XAUTHORITY}。例如,GNOME 显示管理器如下所示:

    \n

    $ printenv XAUTHORITY\n

    \n

    /run/user/1000/gdm/Xauthority\n

    \n

次佳答案

file manager SpaceFM 允许这样做。请参阅自动运行设置,例如 Auto Run | On MountAuto Run | On Unmount

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13135.html,未经允许,请勿转载。