最近工作上需要判斷是否有插入隨身碟,指令還滿簡單的所以再發想一些應用面的東西;包含簡單的 shell script 去執行指定程式。
指令:lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 006: ID 0bda:8821 Realtek Semiconductor Corp.
Bus 002 Device 004: ID 0518:0001 EzKEY Corp. USB to PS2 Adaptor v1.09
Bus 002 Device 003: ID 05e3:0727 Genesys Logic, Inc. microSD Reader/Writer
Bus 002 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
說明:會列出目前所有連上usb設備
插入usb隨身碟 再執行一次指令
指令:lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 006: ID 0bda:8821 Realtek Semiconductor Corp.
Bus 002 Device 018: ID 1005:b113 Apacer Technology, Inc. Handy Steno/AH123 / Handy Steno 2.0/HT203
Bus 002 Device 004: ID 0518:0001 EzKEY Corp. USB to PS2 Adaptor v1.09
Bus 002 Device 003: ID 05e3:0727 Genesys Logic, Inc. microSD Reader/Writer
Bus 002 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
說明:會發現插入usb後多了一行
Bus 002 Device 018: ID 1005:b113 Apacer Technology, Inc. Handy Steno/AH123 / Handy Steno 2.0/HT203
可以發現新增的一行就是剛插入的usb品牌 Apacer
這邊先記下該usb的ID 1005:b113
新增一個文檔,命名為 checkusb.sh
文件內容如下
!/bin/sh
lsusb | grep 1005:b113 >/dev/null
if [ $? -eq 0 ]
then
echo “Connection”
else
echo “Broken”
fi
說明:
!/bin/sh =>使用shell script來執行該程式
lsusb | grep 1005:b113 >/dev/null =>lsusb 透過文字過濾出 指定的usb id
if [ $? -eq 0 ] => 如果有找到該id
then
echo “Connection”=>就輸出 Connection
else
echo “Broken”=>沒找到 就輸出 Broken
fi =>結束語句
其中echo “Connection” 可以替換成你想要執行的其它程式 可以是.sh / java / php / .py 等等…
最後發想一下應用,如果你有些程式有些安全性的機制,你就可以請使用者插入指定的usb隨身碟當鑰匙,簡單一點的方法就如同上面,複雜一點的方式就可以加入公私鑰的計算。