我目前有一个系统,将我的Linux服务器备份到/media/usb上的USB存储设备上。 这一切正常工作。 但是,我实际上有两个驱动器,我们试图每天交换。
有没有logging当USB设备插入时的日志logging和使用sendmail或类似的方式发送电子邮件给pipe理员如果驱动器尚未交换3天以上的方式?
你可以parsing/ var / log / messages,但我不会。
我会写一个udev规则,当你连接/断开设备时运行脚本。 这里有更多的信息
我已经复制了突出点,以防网站宕机:
规则文件存储在
/etc/udev/rules.d/目录中。有关如何命名规则文件的README目录中的一些build议:
文件应该命名为xx-descriptive-name.rules,首先应根据以下顺序点selectxx:
最多60个用户规则 如果要防止默认规则覆盖分配,请使用:=运算符。
这些不能从vol_id中访问持久性信息
运行帮助程序(如vol_id)的规则填充udev db
运行其他程序的90个规则(通常使用udev db中的信息)
= 90个最后应该运行的规则
udev规则的第一部分是匹配键。 我们将使用链条顶部的KERNEL条目以及设备特定信息中的idVendor,idProduct和serial属性。 这将肯定地识别这个特殊的拇指驱动器,并忽略所有其他的。 内核参数使用问号作为通配符,这样如果我们的驱动器安装在不同的节点上(即:sda1,sdb1,sdc1等),它仍然可以被识别。
KERNEL=="sd?1", ATTRS{idVendor}=="13fe", ATTRS{idProduct}=="1f00", ATTRS{serial}=="50E6920B000AE8"
现在,我们有必要的钥匙来识别我们正在寻找的特定硬件,我们可以添加赋值参数。 在我们的例子中,我们加了两个 第一个在/ dev /目录下创build一个到这个设备的符号链接。 第二个在我们的主目录下执行一个脚本:
SYMLINK+="hackaday", RUN+="/home/mike/notify-plugin.sh 'HackaDay Thumbdrive:' 'Connected as: $KERNEL'"
最后一条规则组合成一行:
KERNEL=="sd?1", ATTRS{idVendor}=="13fe", ATTRS{idProduct}=="1f00", ATTRS{serial}=="50E6920B000AE8", SYMLINK+="hackaday", RUN+="/home/mike/notify-plugin.sh 'HackaDay Thumbdrive:' 'Connected as: $KERNEL'"
我们在规则文件中添加了这个作为唯一的行,然后使用这些命令重新启动了udev:
sudo nano /etc/udev/rules.d/81-thumbdrive.rules sudo /etc/init.d/udev restart
是的,每次插入或断开USB设备时,都会在/ var / log / messages中写入一条或多条消息。 您可以使用命令dmesg轻松检查这些。 每隔(x)个单位轮询该文件以检查连接/断开连接消息并相应采取行动并不是完全不合理的。