系统相关
首页 > 系统相关> > linux – 在连接特定卷时触发操作

linux – 在连接特定卷时触发操作

作者:互联网

我有一个包含我的keepass2密码数据库的USB密钥,我想在插入我的电脑时执行一些操作,即:

>将其自动安装到某个特定位置
>正确完成安装后,在密码数据库文件上启动keepass2

我想简单的任务,但我找不到如何做到这一点.

我正在使用Ubuntu 12.10,它将设备自动安装为“媒体usb-key”并尝试在其上打开图像(即使没有).

最好的方法是什么,并禁用ubuntu自动挂载(所以它不会冲突)?

解决方法:

出现新设备时,会通知udev.它通常根据内置规则¹在/ dev下创建一个设备文件.您可以覆盖这些规则以更改设备文件位置或运行任意程序.以下是udev规则的示例:

KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"

NAME =指令更改了设备文件的位置,我将其包含在内以供说明之用,但它可能对您的用例没用. ATTRS规则识别设备;当驱动器可用作/ dev / sdz时,运行udevinfo -a -n / dev / sdz以查看它具有的属性.请注意,您只能使用udevinfo输入的单个部分中的ATTRS规则(此外,您可以使用初始部分中的ATTR规则).有关更多背景,请参见Understand output of `udevadm info -a -n /dev/sdb`.此规则进入名为/etc/udev/rules.d/local-storage-keypass.rules的文件.

将要运行的命令放在RUN指令中给出的脚本中.就像是:

#!/bin/sh
set -e
if [ -d /media/keypass-drive ]; then
  [ "$(df -P /media/keypass-drive | awk 'NR==2 {print $1}')" = "$(df -P /media | awk 'NR==2 {print $1}')" ]
else
  mkdir /media/keypass-drive
fi
mount "$1" /media/keypass-drive
su ereon -c 'keypass2' &

如果您在从udev触发的脚本中运行GUI程序时遇到问题,请参阅Can I launch a graphical program on another user’s desktop as root?

¹不在/ dev在udevtmpfs上的现代系统上.

标签:linux,ubuntu,automounting
来源: https://codeday.me/bug/20190809/1629916.html