通過 USB 連接設備時執行命令
我目前有一個系統可以將我的 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