2012-04-29 6 views
0

linuxに以下のスクリプトを書いてUSBの詳細を取得しました。このスクリプトはusbが接続されているときにudevから実行されます。ファイル内で実行するとBLKIDは出力されません。

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のlableをチェックするために行くとき、私は何を取得ということです。このコマンドは出力に何も表示されません:

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

+0

私はusbのサイズ、lableとマウントを電子メールしようとしているときに、usbが接続されている/ usbポートから削除されます。私はこれらの値を取得する方法を知っていないので、udev env thatsなぜ私はこの方法を使用した。あなたが私に言うことができるなら、私はあなたに感謝するでしょう。私はグーグルでそれを見つけることはできません。私はこのフォーラムに質問を投稿しましたが、回答はありません。 – user115079

+0

'printenv'を使って設定されたすべての変数を見ることができ、'/sys'で調べるために提供されたパスを使用することができます。 – apmasell

答えて

0

私は構文

blkid > Label 
を変更することで問題を修正しました

/sbin/blkid > Label 

理由はわかりませんが、時にはうまくいきません。

2

sudoを実行すると、適切に実行されます。

sudo blkid 
関連する問題