Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

capire se chiavetta è sda sdb o come si chiama

321 views
Skip to first unread message

mamboo

unread,
Jun 2, 2013, 11:39:00 AM6/2/13
to
scusate... devo dare un comando che operi su una chiavetta... e non
sull'hd... c'è modo per capire se la chiavetta è sda, sdb o cosa...

per quanto non mi piaccia windows... A, B, C: erano molto più semplici!

Copyleft

unread,
Jun 2, 2013, 12:53:03 PM6/2/13
to
Il 02/06/2013 17:39, mamboo ha scritto:
> scusate... devo dare un comando che operi su una chiavetta... e non
> sull'hd... c'è modo per capire se la chiavetta è sda, sdb o cosa...

fdisk -l

>
> per quanto non mi piaccia windows... A, B, C: erano molto più semplici!

Affatto,il metodo "linux" e' molto piu' efficiente IHMO.

Enrico 'Henryx' Bianchi

unread,
Jun 2, 2013, 2:38:21 PM6/2/13
to
Copyleft wrote:

> Affatto,il metodo "linux" e' molto piu' efficiente IHMO.

Indubbiamente, peccato che il tuo sia sbagliato (o meglio, pieno di "rumore") :)

[enrico@whiterabbit ~]$ udevadm info -q all -n /dev/sda|grep BUS|cut -d '=' -f 2
ata
[enrico@whiterabbit ~]$ udevadm info -q all -n /dev/sde|grep BUS|cut -d '=' -f 2
usb
[enrico@whiterabbit ~]$

Enrico

mamboo

unread,
Jun 2, 2013, 3:29:26 PM6/2/13
to
Il 02/06/2013 18:53, Copyleft ha scritto:
> Il 02/06/2013 17:39, mamboo ha scritto:
>> scusate... devo dare un comando che operi su una chiavetta... e non
>> sull'hd... c'ᅵ modo per capire se la chiavetta ᅵ sda, sdb o cosa...
>
> fdisk -l


provato... non fa assolutamente nulla...

Copyleft

unread,
Jun 2, 2013, 5:09:23 PM6/2/13
to
Veramente mi riferivo alla differenza tra A: B: C: alla windows e
sda1,sdb2,sdc3 alla linux,quanto al tuo metodo,puoi chiarire meglio?

gli unici risultati sono ata o usb ma non e' certo illuminante su cosa
sia collegato e dove,
si potrebbero usare mount oppure tail -f /var/log/syslog innestanto la
periferica oppure journalctl -f a seconda della distro (sempre prima di
collegare la periferica).

per quanto riguarda l'OP,temo trattasi di troll,non puo' scrivere che
fdisk -l "non fa assolutamente nulla",a meno che la distribuzione (che
non cita) non sia una live...

Enrico 'Henryx' Bianchi

unread,
Jun 2, 2013, 6:27:59 PM6/2/13
to
wrote:

> devo dare un comando che operi su una chiavetta...

Se il comando e` da eseguire nel momento in cui la chiavetta viene
agganciata al pc, udev e` tuo amico

Enrico

Enrico 'Henryx' Bianchi

unread,
Jun 2, 2013, 6:28:02 PM6/2/13
to
Copyleft wrote:

> Veramente mi riferivo alla differenza tra A: B: C: alla windows e
> sda1,sdb2,sdc3 alla linux,

Ok, avevo inteso piu` come possibile soluzione a quello che

> quanto al tuo metodo,puoi chiarire meglio?

Il mio metodo e` incompleto, ovvero la domanda l'avevo interpretata nel
senso di "/dev/sda e` un disco o una penna USB?" mentre la domanda mi sembra
piu` "quali dei dischi montati e` una penna USB?". In questo caso, manca la
parte iniziale, ovvero determinare quali sono le memorie di massa agganciate
al sistema, e per questa attivita` sembrerebbe che il metodo piu` semplice
sia parsare l'output di fdisk -l e poi passare il risultato alla parte da me
scritta:

[enrico@whiterabbit ~]$ DISKS=$(sudo fdisk -l | grep "Disk \/dev\/sd" | awk
'{print $2}' | sed -e 's/://g'); for i in $DISKS; do echo -n "$i ";udevadm
info -q all -n $i|grep BUS|cut -d '=' -f 2; done
/dev/sda ata
/dev/sdb ata
/dev/sdc ata
/dev/sdd usb
/dev/sde usb
[enrico@whiterabbit ~]$

Infine, se la domanda e` effettivamente "voglio eseguire un comando quando
attacco la penna USB al pc", allora la risposta giusta (come ho gia` detto
all'OP) e`: usa udev

> per quanto riguarda l'OP,temo trattasi di troll,non puo' scrivere che
> fdisk -l "non fa assolutamente nulla",a meno che la distribuzione (che
> non cita) non sia una live...

Non direi, se lo ha lanciato da utente normale l'unica cosa che si puo` dire
e` che ha ragione:

[enrico@whiterabbit ~]$ fdisk -l
[enrico@whiterabbit ~]$ sudo fdisk -l

Disk /dev/sda: 80.0 GB, 80026361856 bytes, 156301488 sectors
[..]
[enrico@whiterabbit ~]$

Enrico

mamboo

unread,
Jun 3, 2013, 12:23:19 PM6/3/13
to
> per quanto riguarda l'OP,temo trattasi di troll,non puo' scrivere che
> fdisk -l "non fa assolutamente nulla",a meno che la distribuzione (che
> non cita) non sia una live...
>

sudo fdisk -l

dᅵ risultati

fdisk -l

non dᅵ risultati.

poi vedi tu se sono troll o no...

enrico tognoni

unread,
Jun 4, 2013, 5:11:48 AM6/4/13
to
lsblk ti può aiutare a vedere cosa cè nella directory standard di
mounting per esempio /media in alcune distribuzioni, pero' devi prima
reperire dove monta automaticamente la distro i device.

sdc 8:32 0 931,5G 0 disk
├─sdc1 8:33 0 32G 0 part /media/recovery
├─sdc2 8:34 0 293G 0 part /media/old
└─sdc3 8:35 0 606,6G 0 part /media/new

sdc 8:32 1 7,6G 0 disk
└─sdc1 8:33 1 7,6G 0 part /media/sdc1-usb-Sony_Storage_Med

però ijn questi due esempi fatti uno dopo l'altro, non distingue tra
chiavetta o hd esterno.
se cerchi /media dovresti identificare la chiavetta. Magari prima
identifichi la regola di mounting che di solito è in:
/etc/udev/rules.d/11-media-by-label-auto-mount.rules

ciao

enrico tognoni

unread,
Jun 4, 2013, 5:29:41 AM6/4/13
to
MI SONO dimenticato di dire che 1 = removable
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sdc 8:32 1 7,4G 0 disk
├─sdc1 8:33 1 1004M 0 part /media/sdc1-usb-Kingston_DataTra
└─sdc2 8:34 1 6,4G 0 part /media/live-r

bc

unread,
Jun 4, 2013, 10:10:21 AM6/4/13
to
Il 03/06/2013 00:28, Enrico 'Henryx' Bianchi ha scritto:
> DISKS=$(sudo fdisk -l | grep "Disk \/dev\/sd" | awk
> '{print $2}' | sed -e 's/://g'); for i in $DISKS; do echo -n "$i ";udevadm
> info -q all -n $i|grep BUS|cut -d '=' -f 2; done

BELLO!!! Questo me lo segno tra i miei preferiti!
Sei riuscito a fare un esempio con:
1) Definizione e utilizzo variabile in una stessa linea.
2) assegnamento del risultato di una serie di comandi ad una variabile
3) utilizzo di grep,sed,awk,cut
4) regexp
5) utilizzo udevadm che non è un comando fra i più noti
6) ciclo for




Enrico 'Henryx' Bianchi

unread,
Jun 4, 2013, 3:09:42 PM6/4/13
to
bc wrote:

> BELLO!!! Questo me lo segno tra i miei preferiti!

Non so se essere lusingato o meno :)
Per inciso, la parte assegnata nella variabile non e` mia, ma frutto di una
ricerca mirata su google e adattata.

> 1) Definizione e utilizzo variabile in una stessa linea.
> 2) assegnamento del risultato di una serie di comandi ad una variabile

Ecco, a rileggerla non so come mai ho usato una metodologia del genere. A
riscriverla, avrei fatto cosi`:

for i in $(sudo fdisk -l 2>/dev/null | grep "Disk \/dev\/sd" | awk '{print
$2}' | sed -e 's/://g'); do echo -n "$i ";udevadm info -q all -n $i|grep
BUS|cut -d '=' -f 2; done

> 4) regexp

Eh? A parte dei backslash di protezione (inutili), non ci sono regexp

Enrico

BIG (Umberto)

unread,
Jun 4, 2013, 5:06:24 PM6/4/13
to
Enrico 'Henryx' Bianchi in data 21:09, martedᅵ 04 giugno 2013, nel gruppo
it.comp.os.linux.iniziare ha scritto:

> Ecco, a rileggerla non so come mai ho usato una metodologia del genere. A
> riscriverla, avrei fatto cosi`:

Bei giochini!
Con una piccola modifica (se non ti dispiace), aggiungerei un paio di info
utili: il mount-point ed il modello del dispositivo.


Funzionano sia in uno script che incollando direttamente in un terminale.



# modo 1

DISKS=$(sudo fdisk -l | grep "Disk \/dev\/sd" | \
awk '{print $2}' | sed -e 's/://g'); for i in $DISKS; do echo -n -e "$i\t"; \
echo -n -e $(grep $i /etc/mtab | awk '{print $2}') ; echo -n -e "\t\t"; \
echo -e $(/sbin/udevadm info -q all -n $i | grep "ID_BUS\|ID_MODEL" | \
cut -d '=' -f 2) ; done ; echo



# modo 2

for i in $(sudo fdisk -l 2>/dev/null | grep "Disk \/dev\/sd" | \
awk '{print $2}' | sed -e 's/://g'); do echo -n -e "$i\t"; \
echo -n -e $(grep $i /etc/mtab | awk '{print $2}') ; echo -n -e "\t\t"; \
echo -e $(/sbin/udevadm info -q all -n $i | grep "ID_BUS\|ID_MODEL" | \
cut -d '=' -f 2) ; done ;echo




--
+---------------------------------------------------------------------------+
|I puristi ritengono inopportuno utilizzare driver proprietari sutto Linux, |
|i masochisti amano utilizzare driver Windows sotto Linux... Twisted Evil |
+-----#19--------------------Campagna contro le pubblicita` idiote.---------+

Piergiorgio Sartor

unread,
Jun 4, 2013, 5:08:51 PM6/4/13
to
On 2013-06-02 17:39, mamboo wrote:
> scusate... devo dare un comando che operi su una chiavetta... e non
> sull'hd... c'ᅵ modo per capire se la chiavetta ᅵ sda, sdb o cosa...
>
> per quanto non mi piaccia windows... A, B, C: erano molto piᅵ semplici!

Dipende, in automatico o manualmente.
Il device "raw" oppure hai un mount point?

Un metodo banale:

ls /dev/sd*
<inserire chiavetta>
ls /dev/sd*

la differenza ti da il device (a meno di race
condition, ma non credo sia un caso normale).

Se usi "ls -l --sort=time /dev/sd*" puoi anche
vedere l'ultimo device in ordine di tempo.

Da script, allora come gia` suggerito "udev"
dovrebbe a fare al caso tuoi.

bye,

--

piergiorgio

Enrico 'Henryx' Bianchi

unread,
Jun 5, 2013, 5:20:12 PM6/5/13
to
BIG (Umberto) wrote:

> Bei giochini!

Bei giochini fino ad un certo punto, qualche tempo fa' su di una chat, per
gioco, ci si e` dilettati a scrivere un generatore randomico di bestemmie
che potesse essere postato su twitter (se non ricordo male, ci si riusci` o
ci si ando` molto vicino) :)

> DISKS=$(sudo fdisk -l | grep "Disk \/dev\/sd" | \

Questo non lo vedo utile, tanto vale usare la variabile inline

Enrico

bc

unread,
Jun 6, 2013, 12:10:11 PM6/6/13
to
Il 04/06/2013 21:09, Enrico 'Henryx' Bianchi ha scritto:
> Non so se essere lusingato o meno:)

Voleva essere un complimento, non certo una critica per aver scritto
qualcosa di troppo complicato.

> Eh? A parte dei backslash di protezione (inutili), non ci sono regexp

Hai ragione.

l'argomento che hai usato per il sed 's/://g' io me lo sono studiato
mentre cercavo di capire le regexp in perl (da qui il mio
fraintendimento), ma in effetti non è una regexp, ma solo la sinassi per
utilizzarla attraverso sed. La vera regexp dovrebbe essere quella che
sta fra le barre, ma li ci sono solo i ":" da sostituire con NULLA

Ps. Personalmente mi sembrava più leggibile la prima versione rispetto
alla nuova.

BIG (Umberto)

unread,
Jun 6, 2013, 3:33:57 PM6/6/13
to
bc in data 18:10, giovedì 06 giugno 2013, nel gruppo it.comp.os.linux.iniziare
ha scritto:

> l'argomento che hai usato per il sed 's/://g' io me lo sono studiato

Significa semplicemente [1]:
sostituisci il carattere "due punti" con nulla e ripeti la sostituzione per
tutte le ricorrenze (il g finale signifca appunto il "ripeti").
Che tradotto in parole povere, togli dalle scatole, in tutte le righe, tutti i
caratteri "due punti" .


[1] http://www.catonmat.net/blog/wp-content/uploads/2008/09/sed1line.txt

--
+---------------------------------------------------------------------------+
| Le figlie di Maria, sono le prime a darla via. |
| I figli di Gesu' lo voglion tutto su! |
+-----#24--------------------Campagna contro le pubblicita` idiote.---------+

i3hev, mario

unread,
Jun 6, 2013, 4:07:00 PM6/6/13
to
bc wrote:

> ...La... regexp dovrebbe essere quella che
> sta fra le barre, ma li ci sono solo i ":"...

a rigore, anche se molto semplice, è una regexp pure quella :)

--
73 es 51 de i3hev, op. mario

Non è Radioamatore, se non gli fuma il saldatore!
- Campagna "Il Radioamatore non è uno che ascolta la radio"

it.hobby.radioamatori.moderato
http://digilander.libero.it/hamweb
http://digilander.libero.it/esperantovenezia
0 new messages