2012-04-29 663 views
0

我已經在linux中編寫了下面的腳本來獲取USB細節:當usb被連接時,這個腳本從udev執行。BLKID在linux下運行時沒有給出輸出文件

fgrep -A 15 'New USB device found' /var/log/messages | tail -n 16 > usb_detail 
    SERIAL=$(sed -n '5s/A.*: //p' usb_detail) 
    SIZE=$(sed -n '10s/A.*: //p' usb_detail) 
    MOUNT=$(sed -n '14s/A.*: //p' usb_detail) 
    blkid > Label 
    LABEL=$(grep $MOUNT Label | awk '{print $2}') 

現在的問題是,我得到的所有值(序列號,大小,安裝上),但是當它從BLKID檢查USB的拉布勒然後我什麼也得不到。此命令在輸出中沒有任何內容:

blkid > Label 

此命令在命令提示符下正常工作。但是當我在這個腳本中運行它(當usb被連接時從UDEV調用它),那麼它不會給出任何輸出。

那麼我怎樣才能弄清楚什麼是主要問題,爲什麼我沒有在LABEL文件中得到任何東西?

這裏是我的/ var/log/messages中:

Apr 28 08:25:58 box2 kernel: usb 1-3: New USB device found, idVendor=0411, idProduct=0105 
Apr 28 08:25:58 box2 kernel: usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=5 
Apr 28 08:25:58 box2 kernel: usb 1-3: Product: USB-SATA Bridge 
Apr 28 08:25:58 box2 kernel: usb 1-3: Manufacturer: BUFFALO 
Apr 28 08:25:58 box2 kernel: usb 1-3: SerialNumber: 00001412AA38 
Apr 28 08:25:58 box2 kernel: usb 1-3: configuration #1 chosen from 1 choice 
Apr 28 08:25:58 box2 kernel: scsi25 : SCSI emulation for USB Mass Storage devices 
Apr 28 08:26:05 box2 kernel: scsi 25:0:0:0: Direct-Access  BUFFALO External HDD   PQ: 0 ANSI: 2 CCS 
Apr 28 08:26:05 box2 kernel: sd 25:0:0:0: Attached scsi generic sg0 type 0 
Apr 28 08:26:05 box2 kernel: sd 25:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB) 
Apr 28 08:26:05 box2 kernel: sd 25:0:0:0: [sda] Write Protect is off 
Apr 28 08:26:05 box2 kernel: sd 25:0:0:0: [sda] Assuming drive cache: write through 
Apr 28 08:26:05 box2 kernel: sd 25:0:0:0: [sda] Assuming drive cache: write through 
Apr 28 08:26:05 box2 kernel: sda: sda1 
Apr 28 08:26:05 box2 kernel: sd 25:0:0:0: [sda] Assuming drive cache: write through 
Apr 28 08:26:05 box2 kernel: sd 25:0:0:0: [sda] Attached SCSI disk 

,這裏是從命令提示符BLKID輸出:

[[email protected] usbmon]# blkid 
/dev/sdf1: UUID="2d1bd58e-86ea-4ab2-99e3-ec2d1fb24021" TYPE="ext4" 
/dev/sdf2: UUID="Je95wE-NW7f-Mqlv-UBgi-qNOL-8i35-8cUUTj" TYPE="LVM2_member" 
/dev/mapper/vg_box2-lv_root: UUID="27cf24f7-4e7d-42bd-97be-09ddc6eb614b" TYPE="ext4" 
/dev/mapper/vg_box2-lv_swap: UUID="36c54ea3-f9f3-455a-9c84-58e7317d1e60" TYPE="swap" 
/dev/mapper/vg_box2-lv_home: UUID="5cac0192-2757-4cf6-b70f-d9ff8fbe6f36" TYPE="ext4" 
/dev/sda1: LABEL="BU5" UUID="242DB177461FD69A" TYPE="ntfs" 
+0

最後,你是否想要達到目標?在udev熱插拔期間,塊設備尚未在'/ dev'中創建,所以'blkid'不會找到它。您也不需要查看系統日誌,因爲相應的信息通過環境變量傳遞給指向'/ sys'中有關驅動器的許多信息的udev腳本。 – apmasell 2012-04-29 14:57:25

+0

當usb連接/從usb端口移除時,我試圖通過電子郵件發送usb大小,標籤和掛載。因爲我不知道如何從udev env中獲得這些值,這就是爲什麼我使用這種方式。如果你能告訴我,那麼我會感謝你。我在Google搜索時找不到它。即使我在這個論壇發佈了一個問題,但沒有迴應。 – user115079 2012-04-29 15:37:43

+0

您可以看到使用'printenv'設置的所有變量,然後使用提供的路徑在'/ sys'中查看。 – apmasell 2012-04-29 15:43:06

回答

0

我通過改變語法

blkid > Label 
固定的問題

/sbin/blkid > Label 

不知道爲什麼,但有時它的工作原理。

2

與sudo一起運行會給你適當的。

sudo blkid