sobota 8. října 2011

Identifikace USB disků podle typu připojení

Nedávno jsem narazil na problém jednoho uživatele, který chtěl svým dvěma nesystémovým pevným diskům změnit po startu systému přes hdparm chování, ale ty se mu pokaždé připojují jinam v /dev/sd*., a tak neví jak napsat skript, který by je přesně identifikoval. Chvíli jsem se na tím zamyslel, jak napsat nějaké univerzální řešení pro vypsání všech interních pevných disků, které zároveň nejsou systémové. Vzhledem k tomu, že na mých počítačích se nachází krom zmíněných pouze USB disky, napadlo mě tyto identifikovat podle způsobu připojení a z výpisu je vyřadit. Pak už zbývá jen identifikovat disk, na kterém běží systém. Dospěl jsem se svými znalostmi k následujícímu:

find /dev -regex /dev/sd. | while read dev; do if ! udevadm info -n $dev -q path | grep -q usb; then mount | grep -q "$dev. on / " || hdparm -S60 $dev ; fi; done

Tento příkaz nastaví diskům podle předchozí specifikace dobu pro uspání při nečinnosti na 5 minut (hdparm -S60 - 60x5 sekund=5minut). Kdyby to někdo z příkazu nepobral - find najde přípojné body všech disků, výstup se čte řádek po řádku a pro každý disk se nejprve zkontroluje ve výstupu udevadm -n zda je připojen na USB sběrnici a pokud není, další pomínka v podobě výstupu příkazu mount pošle příkaz hdparm -S60 pouze na disky, na kterých není kořenový adresář běžícího systému.

Seznam pouze USB disků pak můžete dostat takto:

find /dev -regex /dev/sd. | while read dev; do udevadm info -n $dev -q path | grep -q usb && echo $dev; done

Pokud chcete s disky cokoliv rovnou provést, nahradíte echo konkrétním příkazem, stejně jako v minulém příkladě.

Další možností by mohlo být vypsání všech připojených filesystémů USB disků i s přípojnými body, včetně parametrů:

find /dev -regex /dev/sd. | while read dev; do udevadm info -n $dev -q path | grep -q usb && mount | grep $dev; done


1 komentář:

Zkuste prosím při komentováni používat místo volby Anonymní volbu Název/adresa URL, kde vyplníte nějakou přezdívku, adresu zadávat nemusíte. Vědět, které příspěvky jsou od jednoho člověka, je fajn. Díky.

Pokud by se vám náhodou odeslaný komentář na stránce nezobrazil, vytáhnu ho z koše hned jak si toho všimnu. I Google spam filter se občas sekne.