我正在爲與用戶提供的USB記憶棒交互的設備編寫python模塊。用戶可以將USB記憶棒插入設備的USB插槽,設備將數據轉儲到記憶棒上,無需用戶干預。如果設備在用戶插入USB記憶棒時運行,我已經連接到D-Bus並且有一個自動安裝程序全部解決。新的問題是,如果在設備斷電的情況下插入棒,該怎麼辦?在設備開機後,我沒有收到D-Bus插入事件或任何關於記憶棒的信息。在Linux中更好地腳本安裝USB設備
我已經摸索出一套方法來獲得從掃描在/ proc的USB設備的設備節點(的/ dev/SD?),通過調用:
ls /proc/scsi/usb-storage
這給瞭如果SCSI設備信息你會捕獲該文件夾中的每個文件。
我然後採取供應商,產品,和從USB存儲記錄序列號字段,生成的標識符字符串,我然後在
ll /dev/disc/by-id/usb_[vendor]
_[product]
_ [SERIAL_NUMBER] -0使用:0
所以,我可以通過分析結果得到的相對路徑
../../sdc
然後,我可以掛載USB棒。
這是一個繁瑣的過程,幾乎所有的文本爲基礎,並準備好當有人引入一個奇怪的字符或非標準序列號字符串的錯誤。它適用於我擁有的全部2個USB記憶棒。我試圖映射來自/ var/log/messages的輸出,但最終也是文本比較。來自lsusb,fdisk,udevinfo,lsmod等的輸出僅顯示所需數據的一半。
我的問題:如何在沒有用戶干預的情況下確定在沒有D-Bus消息的情況下分配給USB記憶棒的/ dev設備,還是事先知道所插入設備的細節?
謝謝,對小說抱歉。
我實際上採用了一種更簡單的方法。我在 /dev/disk/by-id/usb - * - part * 其中每個條目都鏈接到/ dev設備。快速調用os.path.realpath獲取鏈接的設備。 – Therealstubot 2010-03-10 18:21:00