2012-05-04 30 views
0

私はLinuxのbashでudevとbashスクリプトを使ってプログラムを書いています。Linuxでusbプラグイン/アウト

usbが接続されている場合、スクリプトを呼び出すudevルールが実行されます。そのスクリプトは/ var/log/messagesファイルを読み込み、ログファイルから接続されたUSBハードドライブに関する情報を取得し、電子メールで情報を送信します。

プログラムは問題なく動作していますが、問題が発生しました。私はusbを取り除こうとすると、内側にしっかりと注入されているので、取り除かなければならない。これによる私の電子メールの形式が邪魔になり、私はそれは、複数の無用の電子メールを生成して、私は次のログを取得information.also適切な取得いけない:

May 04 13:06:13 coil sendEmail[12467]: Email was sent successfully! 
May 4 13:06:13 coil vmbackup[12450]: USB Removed: Email sent to [email protected] 
May 4 13:06:16 coil kernel: [8474935.215393] usb 2-6: USB disconnect, address 126 
May 4 13:06:16 coil kernel: [8474935.601292] usb 2-6: new high speed USB device using ehci_hcd and address 127 
May 4 13:06:17 coil kernel: [8474935.868637] usb 2-6: configuration #1 chosen from 1 choice 
May 4 13:06:17 coil kernel: [8474935.915429] scsi85 : SCSI emulation for USB Mass Storage devices 
May 4 13:06:17 coil kernel: [8474935.982734] input: Western Digital My Book as /devices/pci0000:00/0000:00:1d.7/usb2/2-6/2-6:1.1/input/input82 
May 4 13:06:17 coil kernel: [8474935.982808] generic-usb 0003:1058:1102.0050: input,hidraw0: USB HID v1.11 Device [Western Digital My Book] on usb-0000:00:1d.7-6/input1 
May 4 13:06:17 coil kernel: [8474935.982808] generic-usb 0003:1058:1102.0050: input,hidraw0: USB HID v1.11 Device [Western Digital My Book] on usb-0000:00:1d.7-6/input1 
May 4 13:06:17 coil kernel: [8474936.084957] usb 2-6: USB disconnect, address 127 
May 4 13:06:17 coil kernel: [8474936.500051] usb 2-6: new high speed USB device using ehci_hcd and address 2 
May 4 13:06:17 coil kernel: [8474936.769487] usb 2-6: configuration #1 chosen from 1 choice 
May 4 13:06:17 coil kernel: [8474936.815499] scsi86 : SCSI emulation for USB Mass Storage devices 
May 4 13:06:18 coil kernel: [8474936.882954] input: Western Digital My Book as /devices/pci0000:00/0000:00:1d.7/usb2/2-6/2-6:1.1/input/input83 
May 4 13:06:18 coil kernel: [8474936.883044] generic-usb 0003:1058:1102.0051: input,hidraw0: USB HID v1.11 Device [Western Digital My Book] on usb-0000:00:1d.7-6/input1 
May 4 13:06:22 coil kernel: [8474941.837814] scsi 86:0:0:0: Direct-Access  WD  My Book   1028 PQ: 0 ANSI: 4 
May 4 13:06:22 coil kernel: [8474941.838208] sd 86:0:0:0: Attached scsi generic sg3 type 0 
May 4 13:06:22 coil kernel: [8474941.838208] sd 86:0:0:0: Attached scsi generic sg3 type 0 
May 4 13:06:23 coil kernel: [8474941.860051] sd 86:0:0:0: [sdc] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) 
May 4 13:06:23 coil kernel: [8474941.873798] sd 86:0:0:0: [sdc] Write Protect is off 
May 4 13:06:23 coil kernel: [8474941.955971] sdc: sdc1 
May 4 13:06:23 coil kernel: [8474942.014853] sd 86:0:0:0: [sdc] Attached SCSI disk 
May 04 13:06:23 coil sendEmail[12495]: Email was sent successfully! 
May 4 13:06:23 coil vmbackup[12478]: USB Added: Email sent to [email protected] 
May 04 13:06:26 coil sendEmail[12527]: Email was sent successfully! 
May 4 13:06:26 coil vmbackup[12510]: USB Removed: Email sent to [email protected] 
May 04 13:06:35 coil sendEmail[12546]: Email was sent successfully! 
May 4 13:06:35 coil vmbackup[12535]: USB Added: Email sent to [email protected] 
May 04 13:06:37 coil sendEmail[12576]: Email was sent successfully! 
May 4 13:06:37 coil vmbackup[12559]: USB Removed: Email sent to [email protected] 
May 04 13:06:48 coil sendEmail[12596]: Email was sent successfully! 
May 4 13:06:48 coil vmbackup[12585]: USB Added: Email sent to [email protected] 

今、私はこれで問題がコーディングされていないことを知っています。しかし、何とか私がこの問題を解決できるかどうかを知りたいですか?このシナリオに注意してください。

答えて

0

あなたのスクリプトで何らかのディバンシーをしなければなりません。それが最近呼び出されたかどうかを確認するたびに(< 1秒または2秒)、何かをしないでください。時間マーカーとして/ tmpのタイムスタンプとしてファイルを使用することができます。

このような何かがうまくいくかもしれない:

delta=2 # 2 seconds of debounce 
stampfile=/tmp/stamp 
now=$(date +%s) 
then=$(< $stampfile) 
[[ -z $then ]] && then=$now 
diff=$((now-then)) 
if [[ $((diff < delta)) ]]; then 
    exit 
else 
    echo $now > $stampfile 
fi 
関連する問題