Ami*_* KK 18 scripts logging screenshot mass-storage
我想要一个转储日志并在插入 USB 大容量存储器后立即开始登录的脚本(上面有文件“OKdump”)。如果检测到任何异常(如视觉上存在的错误),我想要它可以截取屏幕截图并将其保存在同一驱动器上。
con*_*use 14
使用 Udev。Udev 是一个设备管理器守护进程。除其他外,它负责命名您的设备。您可以通过将具有特定语法的文件放在 rules 目录中来定义 udev-rules。规则可以做很多事情 - 特别是当连接某个设备时,它们可以运行脚本。
首先,您需要在您的设备上收集信息。假设您连接了它,并且知道它在名称下/dev/sdb1。如果是这样运行:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)
Run Code Online (Sandbox Code Playgroud)
该命令将输出有关您的设备的信息。这是一个相当长的。您需要找到唯一标识设备的东西。这可能是一个类似序列的序列ATTRS{serial}=="UA04FLGC"或其他属性的组合,例如ATTRS{idVendor}和ATTRS{idProduct}。大多数名称或多或少是不言自明的。选择一个或几个看起来合理的组合 - 如果它们不起作用,请尝试其他方法。
找到唯一标识符后,在/etc/udev/rules.d其中创建一个以两位数字开头并以.rules. 两位数字指定处理这些 .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"
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的实际 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 规则的优秀教程。不过,您在这里阅读的内容应该足以引起人们的注意。