我想要一个脚本来转储日志并在插入USB大容量存储后立即对其进行登录(上面带有文件'OKdump')。如果检测到任何异常(例如出现视觉错误)拍摄屏幕截图并将其保存在同一驱动器上。
我想要一个脚本来转储日志并在插入USB大容量存储后立即对其进行登录(上面带有文件'OKdump')。如果检测到任何异常(例如出现视觉错误)拍摄屏幕截图并将其保存在同一驱动器上。
Answers:
使用Udev。Udev是设备管理器守护程序。除其他事项外,它负责命名您的设备。您可以通过将具有特定语法的文件放在rules目录中来定义udev-rules。规则可以做很多事情-特别是当连接特定设备时,它们可以运行脚本。
首先,您需要在设备上收集信息。假设您已将其连接起来,并且知道它的名称为/dev/sdb1
。如果这样运行:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)
该命令将输出有关您的设备的信息。这是一个很长的时间。您需要找到可以唯一标识设备的内容。那可能是连续的ATTRS{serial}=="UA04FLGC"
其他属性(例如ATTRS{idVendor}
和)的组合ATTRS{idProduct}
。大多数名称或多或少是自我解释。选择一种或几种看似合理的组合-如果它们不起作用,请尝试其他方法。
找到唯一的标识符后,请在/etc/udev/rules.d
其中创建一个以两位数开头和以结束的文件.rules
。这两位数字指定了处理这些.rules-files的顺序-70-usb-log-custom.rules
应该是您的理想选择。此规则文件的语法可能非常复杂。如果您有兴趣,请访问Google udev。如果不是,请仅打开新创建的文件并将其编辑为如下所示:
# /etc/udev/rules.d/70-usb-log-custom.rules
KERNEL=="sd?1", ATTRS{serial}=="UA04FLGC", ACTION=="add", SYMLINK+="cusb1", RUN+="/home/confus/bin/usb-encrypt.sh add %k"
ENV{ID_FS_USAGE}=="crypto", ACTION=="remove", RUN+="/home/confus/bin/usb-encrypt.sh remove %k"
SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="users", MODE="0666"
这是我正在使用的实际udev文件。它具有三个规则。每行都是自己的规则。只要连接了加密磁盘,第一行就会运行脚本以创建解密的设备。如果删除了解密的设备,第二行将使用不同的选项调用同一脚本。第三行设置另一个相关设备的权限。
您很可能只需要第一行。删除其余部分,然后插入正确的序列号(或选择的用于识别设备的参数组合)。
KERNEL=="sd?1"
说我们在这个规则寻找设备线沿线的命名/dev/sda1
,/dev/sdc1
或者类似的东西。问号是任何字母的通配符。ATTRS{serial}=="UA04FLGC"
是此处的唯一标识符。对于我正在谈论的另一台设备(第三行),我不是在使用序列号,而是使用SYSFS{idVendor}=="1781"
和的组合SYSFS{idProduct}=="0c9f"
来识别它。
ACTION=="add"
告诉规则它仅在添加设备后才起作用;不是当它被删除时。
SYMLINK+="cusb1"
在磁盘上创建一个符号链接,这样就可以在/dev/cusb1
。
RUN+="/home/confus/bin/usb-encrypt.sh add %k"
运行脚本并将“ add”和“%k”(设备名称)传递给脚本。
我不会提供更多细节,因为有关于udev规则的出色教程。不过,您在这里阅读的内容应该足以引起关注。