2015-08-30 34 views
0

我想運行一個shell腳本,如果一個特殊的USB設備連接到我的覆盆子pi。我曾試圖按照以下說明:運行腳本或Java批處理是USB設備連接到覆盆子pi

http://ubuntuforums.org/archive/index.php/t-502864.html

我創建了一個名爲85-my_rule.rules與內容文件: ACTION == 「添加」,SUBSYSTEM == 「USB_DEVICE」,SYSFS {idVendor} ==「ffff」,SYSFS {idProduct} ==「1000」,RUN + =「/ usr/bin/usbdevinserted」

我的腳本usbdevinserted具有以下內容: echo「Dies ist ein Text」>>/tmp/text

如果我在shell上執行這個腳本,命名爲text的文本文件將被創建,內容是「Dies ist ein Tex t「,所以腳本工作正常。但是,如果我將usb設備連接到rasppi,似乎不會被執行。所以我認爲,錯誤在我的規則中,但我找不到它。任何人都可以幫助我嗎?

問候, 安德烈亞斯

回答

0

是供應商和產品標識是否正確?

ffff和1000看起來很奇怪,但它可能是可能的(例如一些評估板)。

通常情況下,「dmesg的」打印出VID/PID(插/拔了幾次,「dmesg的」,檢查最後幾行)

此外,仔細檢查它是否是一個十六進制十進制的轉換問題(嘗試十進制65535和4096)

+0

嗨,是的,我認爲這些值是正確的。我執行lsusb(如上所述)並顯示了4行。然後我連接我的USB設備(數碼相框)並再次執行lsusb。唯一改變的線是具有這些值的線。 – Hirschniesel

0

我找到了解決方案。我有我的規則更改爲以下規則:

ACTION=="add",SUBSYSTEM=="block",KERNEL=="sd*[!0-9]|sr*",RUN+="/usr/bin/usbdevinserted" 

,現在我的腳本是:

#!/bin/bash 
echo "Dies ist ein Text" >>/tmp/text 

,但我不知道爲什麼我不得不插入我的腳本的第一行。有人可以解釋這條線嗎?

Greetings, Andreas