2009年11月10日 星期二

Linux 下 disable 和 enable usb 隨身碟

因為專案的需求,要在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等)

------------------------------------------
常用的技巧:
(一) 去掉變數中的空白字元
  1. $ve=`uname -r`;
  2. $ve=~s/\s+//; 
  3.  

(二)執行外部指令:
因為有用到 "|" 且又想截取指令的執行結果,故用open()。
用 `` 一樣可以執行外部命令,但是若遇到 "|" 會無法得到指令執行的結果。

  1. sub number{
  2.        my $umber;
  3.        open(PIPO,"df | grep '\\bmedia' | awk '{print \$1}'|wc -l |") ;
  4.        while(<PIPO>){
  5.              $unmber=$_ ;
  6.            } 
  7.      
  8.        return $unmber ;
  9. } 

注意:
指令中有以下符號時需使用:'\' 使其正去意義如此才能正確執行否則會有錯誤。
  • "\"
  • "$"
  • "\n"


(三)
grep使用邊界讓搜尋更準確一'\b'
使用方式: grep '\bkey' 檔案 或 | 的結果
範例:
  1. lsmod | grep '\busb_storage'


(四)去掉變數中的換行字元:
      如下圖執令的執行結果存到變數後如何以 ':'  代替 換行字元
      變成如:/dev/sdc:/dev/sdb 呢 ?!
  
      這樣做的好處是方便我們用split 函數把字串分割成陣列儲存






sed -e :x -e 'N;s/\\n/:/;tx'


下載程式: usb.pl

沒有留言:

張貼留言