我想要一个脚本来转储日志,并在usb大容量存储插入(文件'OKdump‘在它上)时立即开始登录它,如果检测到任何异常(比如视觉上存在的错误),我希望它能够截图并保存在同一个驱动器上。
发布于 2011-06-24 16:09:16
使用Udev。Udev是一个设备管理器守护进程。除其他外,它负责命名您的设备。您可以通过在rules目录中放置具有特定语法的文件来定义udev-规则。这些规则可以做很多事情--特别是当某个设备连接时,它们可以运行脚本。
首先,你需要在你的设备上收集信息。假设您连接了它,并且知道它的名称是/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结尾的文件。这两个数字指定了处理这些规则-文件的顺序- 70-usb-log-custom.rules对您来说应该是一个很好的选择。此规则文件的语法可能非常复杂。如果你感兴趣,谷歌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规则的优秀教程。不过,你在这里读到的东西应该足以引起人们的注意。
https://askubuntu.com/questions/50357
复制相似问题