Linux

通過 USB 連接設備時執行命令

  • April 13, 2014

我目前有一個系統可以將我的 Linux 伺服器備份到/media/usb. 這一切正常。但是,我實際上有 2 個驅動器,我們每天都嘗試更換它們。

插入 USB 設備時是否有日誌記錄以及使用方式sendmail或類似的方式,例如如果驅動器未更換 3 天以上,是否可以向管理員發送電子郵件?

你可以解析 /var/log/messages,但我不會。

當您連接/斷開設備時,我會編寫一個執行腳本的 udev 規則。這裡有更多關於它的資訊

如果該網站出現故障,我已經複製了要點:

規則文件儲存在/etc/udev/rules.d/目錄中。

該目錄中的自述文件中有一些關於如何命名規則文件的建議:

文件應命名為 xx-descriptive-name.rules,應首先根據以下順序點選擇 xx:

< 60 條大多數使用者規則;如果要防止分配被預設規則覆蓋,請使用 := 運算符。

這些無法訪問持久性資訊,例如來自 vol_id 的資訊

< 70 條執行幫助程序(例如 vol_id)來填充 udev 數據庫的規則

< 90 條執行其他程序的規則(通常使用 udev db 中的資訊)

> > = 90 條應該最後執行的規則 > > >

udev 規則的第一部分是匹配鍵。我們將使用鏈最頂端的 KERNEL 條目以及設備特定資訊中的 idVendor、idProduct 和序列屬性。這將積極地辨識這個特定的拇指驅動器並忽略所有其他的。核心參數使用問號作為萬用字元,因此如果我們的驅動器安裝在不同的節點上(即:sda1、sdb1、sdc1 等),它仍然可以被辨識。

KERNEL=="sd?1", ATTRS{idVendor}=="13fe", ATTRS{idProduct}=="1f00",
ATTRS{serial}=="50E6920B000AE8" 

現在我們有了辨識我們正在尋找的特定硬體所需的鍵,我們可以添加分配參數。在我們的例子中,我們添加了兩個。第一個在 /dev/ 目錄中創建指向此設備的符號連結。第二個在我們的主目錄中執行一個腳本:

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

引用自:https://serverfault.com/questions/399698