Dowiedz się, czy określone urządzenie jest pamięcią masową USB


10

Kontekst

Automatyzuję obrazowanie kart SD z istniejącego ddobrazu fabrycznego. Karta SD jest zawsze podłączana przez zewnętrzny czytnik kart USB i dlatego pojawia się w systemie jako urządzenie blokowe SCSI /dev/sd*.

Obecnie składnia mojego polecenia brzmi: write-image DEVICEgdzie DEVICEjest urządzenie blokujące kartę SD, np. /dev/sdd.

Problem

Robię już podstawowe sprawdzenie, DEVICEczy ma formę, /dev/sd*ale to nie wystarczy: obawiam się, że użytkownicy (ludzie produkcyjni nieprzyzwyczajeni do Linuksa) popełniają błąd i określają inne z pozoru prawidłowe urządzenie, np. /dev/sda. Widać nadciągającą katastrofę, zwłaszcza, że ​​mój skrypt obrazowania potrzebuje uprawnień roota (nie zapisuj samego obrazu, pamiętaj, ale później zmodyfikuj kartę SD, w tym dostosuj rozmiar partycji w zależności od rzeczywistego rozmiaru karty SD) ...

Pytanie

Chciałbym sprawdzić, czy określone urządzenie jest rzeczywiście pamięcią masową USB (lub przynajmniej urządzeniem wymiennym), aby zabezpieczyć dyski systemowe przed przypadkowym uszkodzeniem. Jak mogę to zrobić?

Nie znalazłem nic istotnego w /procani w Internecie, teraz jestem całkiem zagubiony.

Odpowiedzi:


10

Zajrzyj do /sys/katalogu. W szczególności /sys/block/zawiera dowiązania symboliczne do blokowania urządzeń /sys/devices/.

/sys/block/sdX/removablewygląda na to, że będzie czytać jako 1 dla urządzenia wymiennego, a 0 w przeciwnym razie. To daje podstawowe sprawdzenie możliwości usunięcia.

Nie jestem pewien, czy jest lepszy sposób, aby sprawdzić, czy to urządzenie USB, ale readlink /sys/block/sdewypluję coś takiego ../devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1.2/6-1.2:1.0/host7/target7:0:0/7:0:0:0/block/sde. Sprawdzanie, czy zawiera on usb*folder, może działać jako proste sprawdzenie.

Możesz uzyskać inne szczegóły urządzenia, takie jak dostawca i model /sys/block/sdX/device/, które mogą się przydać.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.