因為專案的需求,要在linux的環境下 鎖 USB 裝置 ;並且在鎖住之後也能開啟。
於是就用Perl 寫了一隻程式來滿足專案的需求。這一隻Perl程式 還要在搭配其他的javascript:void(0)
程式才能真正的做到中央控管的需求。但,就算是單獨執行,也能順利的完成關、開
USB儲存媒體的能力。
執行環境:Ubunut 9.04
執行前的準備工作
一 : 先把 usp.pl 程式 改成有執行的權限
二 : 把usb.pl 程式的 owner 和 group 改成是 root
如何 disable usb
一: 開啟command line 並切到 root 的權限
二 : usb.pl disab
如何 enable usb
一:開啟command line 並切到 root 的權限
二 :usb.pl enab
實作時用到的東西如下:
1:用到 Awk、Sed 處理 文字資訊
2:呼叫大量的外部指令(如:sed、awk、df等)
------------------------------------------
常用的技巧:
(一) 去掉變數中的空白字元
$ve=`uname -r`;
$ve=~s/\s+//;
(二)執行外部指令:
因為有用到 "|" 且又想截取指令的執行結果,故用open()。
用 `` 一樣可以執行外部命令,但是若遇到 "|" 會無法得到指令執行的結果。
sub number{
my $umber;
open(PIPO,"df | grep '\\bmedia' | awk '{print \$1}'|wc -l |") ;
while(<PIPO>){
$unmber=$_ ;
}
return $unmber ;
}
注意:
指令中有以下符號時需使用:'\' 使其正去意義如此才能正確執行否則會有錯誤。
(三)
grep使用邊界讓搜尋更準確一'\b'
使用方式: grep '\bkey' 檔案 或 | 的結果
範例:
lsmod | grep '\busb_storage'
(四)去掉變數中的換行字元:
如下圖執令的執行結果存到變數後如何以 ':' 代替 換行字元
變成如:/dev/sdc:/dev/sdb 呢 ?!
這樣做的好處是方便我們用
split 函數把字串分割成陣列儲存。
sed -e :x -e 'N;s/\\n/:/;tx'
下載程式: usb.pl