[+] Lista zamontowanych systemów plików z usb

Ogólne pytania dotyczące systemu
fado
Posty: 16
Rejestracja: 31 marca 2012, 12:25

[+] Lista zamontowanych systemów plików z usb

Post autor: fado »

Witam.
P
otrzebuję pobrać listę zamontowanych systemów plików z urządzeń usb (pendrive, telefon, dysk przenośny). Wiem, że urządzenie w takim przypadku będzie używać sterownika usb-storage, ale nijak nie wiem jak powiązać te dane z systemem plików ani jak wydobyć sterownik dla zadanego urządzenia.

Potrzebuję aby to polecenie dało się wykonać bez uprawnień roota, mógłby ktoś nieco podpowiedzieć? Siedzę już kilka zdrowych godzin nad tym a jest mi to niezbędne na wczoraj.
Awatar użytkownika
Rafal_F
Moderator
Posty: 2350
Rejestracja: 29 sierpnia 2008, 16:45

Post autor: Rafal_F »

Jak zrobić to jednym poleceniem nie wiem, ale bazując na mojej skromnej wiedzy zrobiłbym to tak:
Na początku identyfikujemy które dyski są z usb. Można to zrobić poleceniem:

Kod: Zaznacz cały

ls /dev/disk/by-id/usb*
/dev/disk/by-id/usb-Kingston_DataTraveler_2.0_0019E06B587B5C89160E3E09-0:0
/dev/disk/by-id/usb-Kingston_DataTraveler_2.0_0019E06B587B5C89160E3E09-0:0-part1
Jak widać w tym przypadku są dwa wyniki: pierwszy to nazwa urządzenia, drugi oznacza że na urządzeniu znajduje się jedna partycja. Teraz identyfikujemy urządzenie:

Kod: Zaznacz cały

readlink /dev/disk/by-id/usb-Kingston_DataTraveler_2.0_0019E06B587B5C89160E3E09-0\:0
../../sdc
Problem w tym, że te urządzenia wcale nie muszą być zamontowane. Resztę kombinowałbym szukając powiązań pomiędzy powyższym, a tym co wyświetla:

Kod: Zaznacz cały

mount
Żadne z powyższych poleceń nie wymaga roota.
Może to trochę na około ale inaczej nie umiem, a nie chce mi się szukać.
fado
Posty: 16
Rejestracja: 31 marca 2012, 12:25

Post autor: fado »

Dziękuję, readlinka mi właśnie brakowało.

Dodane:
Już się nacieszyłem tym rozwiązaniem, okazuje się, że dyski zewnętrzne są montowane pod

Kod: Zaznacz cały

/dev/disk/by-id/ata*
Czyli w tym samym miejscu co pozostałe dyski twarde. Problem pozostaje niestety nie rozwiązany, jeśli ktoś ma jakiś pomyśl to byłbym wdzięczny
fnmirk
Senior Member
Posty: 8273
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

Bez względu na zachowanie systemu, automatyczne działania niektórych opcji (programów) zawsze można dodatkowo zamontować urządzenie zewnętrzne w dowolnym katalogu.

Dysk komputera to zazwyczaj: Kolejne dyski to:

Kod: Zaznacz cały

sdb
sdc
itd.
Nie wiem ile dysków zewnętrznych podpinasz w danym momencie, ale więcej niż dwa to moim zdaniem nie jest wskazane.

Jeżeli pamiętasz w jakiej kolejności podpinasz dyski to możesz je zawsze montować jako:

Kod: Zaznacz cały

mount /dev/sdb1 /mnt/ala | mkdir /mnt/ala
pierwszy dysk itd.

Ja w taki sposób montuję dyski zewnętrzne, na dowolnym Linuksie, kiedy muszę dotrzeć do określonej partycji zewnętrznego dysku np. na nie swoim systemie lub z poziomu livecd.

Ja korzystam z katalogu /mnt ale można zrobić to w dowolnie innym miejscu.
fado
Posty: 16
Rejestracja: 31 marca 2012, 12:25

Post autor: fado »

Przeczytaj temat od początku i zastanów się, czy szukam tego co napisałeś? Chcę wylistować punkty montowania urządzeń usb, potrzebne mi to do użycia w programie więc wszystko musi być dynamiczne, a nie tu na oko coś sprawdzę i tam.

Obecnie mam coś takiego:

Kod: Zaznacz cały

for i in `ls /dev/disk/by-id/usb* | grep part`; do readlink $i; done | awk -F '/' '{ system( "df /dev/" $3 " | sed 1d") }' | awk '{ print $6" " $7}'
ale jak już wspomniałem, brakuje mi tu dysków twardych podłączonych poprzez usb. Co prawda polecenie lsusb wyświetla kompletną listę urządzeń usb razem z dyskiem, ale niestety nie mam pomysłu jak to połączyć z wynikami polecenia df czy mount?
fnmirk
Senior Member
Posty: 8273
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

&quot pisze:Przeczytaj temat od początku i zastanów się, czy szukam tego co napisałeś?
Moim zdaniem, to niedokładnie wiesz jak działa montowanie urządzeń np. usb w Linuksie i w ogóle nie zrozumiałeś tego o czym napisałem.

Podepnij jakieś urządzenie usb i wydaj polecenie:

Kod: Zaznacz cały

dmesg  | tail -n50
Następnie wydaj polecenie jako root:

Kod: Zaznacz cały

blkid
Zajrzyj do podręcznika systemowego odpowiedniego polecenia. Połącz wszystko w całość i powinno działać.

Sprawdź zawartość katalogu:

Kod: Zaznacz cały

/media
i porównaj z tym co napisałem wcześniej.
fado
Posty: 16
Rejestracja: 31 marca 2012, 12:25

Post autor: fado »

To nie wiem co miałeś na myśli poprzednim razem. Polecenie dmesg jest o tyle problematyczne, że wynik może być wyczyszczony. A polecenie blkid wymaga uprawnień roota co już się gryzie z moimi potrzebami.
fnmirk
Senior Member
Posty: 8273
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

&quot pisze:A polecenie blkid wymaga uprawnień roota
Polecenie mount też takich uprawnień wymaga.
Awatar użytkownika
Rafal_F
Moderator
Posty: 2350
Rejestracja: 29 sierpnia 2008, 16:45

Post autor: Rafal_F »

fnmirk pisze:Polecenie mount też takich uprawnień wymaga.
Tylko montowanie/odmontowywanie, mount bez parametrów wyświetla wszystkie zamontowane systemy plików i można tego użyć bez roota.
Awatar użytkownika
darkwater
Junior Member
Posty: 828
Rejestracja: 25 stycznia 2007, 14:01
Lokalizacja: Częstochowa

Post autor: darkwater »

Gwoli ścisłości, u mnie polecenie blkid nie wymaga uprawnień roota, wymaga jedynie wywołania z pełną ścieżką dostępu. Inna sprawa, że może to zależeć od grup, do których należy użytkownik.

Kod: Zaznacz cały

darkwater@blackhole:~$ /sbin/blkid /dev/sda1: UUID="7C143B2B143AE7B2" TYPE="ntfs" 
/dev/sda2: UUID="02fd3be3-e41a-4417-b2f6-6d439c59765c" TYPE="ext4" 
/dev/sda4: UUID="575ffe84-a0a1-492c-b2e1-bac905b2f65a" TYPE="ext3
ODPOWIEDZ