# Lister les clefs usb branchées

**URL:** <https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955>\
**Category:** Programmation\
**Tags:** clé-usb\
**Created:** [Avril 2, 2019, 8:47 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955 "2019-04-02T20:47:58Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Avril 2, 2019, 8:47 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/1 "2019-04-02T20:47:58Z")

</div>

Hello à toutes et tous 🙂

Me revoile pour vosu demander encore de l’aide 🙂

Pour mon projet, je mets en place un système de mise à jour via clef usb branchée sur le nanopc.

Voici la grosse partie du script :

```
if [-f "/diagbox/web/tmp/clefusb_resultat"];then
	sudo rm /diagbox/web/tmp/clefusb_resultat
fi

echo "verif dossier /tmp/usb"
if [-d "/tmp/usb"];then
	if sudo umount /tmp/usb;then
		echo "ok"
		if sudo rm -R /tmp/usb;then
		echo "ok"
		else
			sudo echo 'echec remove tmp/usb'	>> /diagbox/web/tmp/clefusb_resultat
		fi
	else
		if sudo rm -R /tmp/usb;then
		echo "ok"
		else
			sudo echo 'echec umount et remove tmp/usb '	>> /diagbox/web/tmp/clefusb_resultat
		fi
	fi
fi

#Vide le dossier iso
echo "vider le dossier stock iso"
if sudo rm -rf /StockImg/*; then
	echo "ok"
else
	sudo echo 'echec vider dossier iso'	>> /diagbox/web/tmp/clefusb_resultat
	ledoff
	exit
fi

echo "recuperer la clef usb"
if sudo mkdir /tmp/usb;then
	echo "ok"
else
	echo "echec creation /tmp/usb"	>>/diagbox/web/tmp/clefusb_resultat
	ledoff
	exit
fi

if sudo mount /dev/sda1 /tmp/usb;then
	echo "ok"
else
	echo "echec mount" >>/diagbox/web/tmp/clefusb_resultat
	ledoff
	exit
fi

if sudo cp /tmp/usb/diagbox.maj /StockImg/diagbox.maj;then
	echo "ok"
	exit
else
	echo "echec copie" >>/diagbox/web/tmp/clefusb_resultat
	ledoff
	exit
fi

```

Comme vous pouvez le voir je force l’utilisation de /dev/sda1, vu que je branche une clef à la fois.

Cependant, je souhaite anticiper et me dire que certaines personnes peuvent en brancher plusieurs.

Du coups, j’aimerais etablir une liste des clef usb branchées et l’editer dans un fichier texte, que je pourrai exploiter pour mon interface web.

quelqu’un aurait une idée 🙂 ?

Merci par avance

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Avril 2, 2019, 9:19 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/2 "2019-04-02T21:19:28Z")

</div>

Salut

```auto
lsusb -v

```

donne les informations sur le bus usb

A chaque fois que j’insère une clé , j’y vois

```auto
bInterfaceClass 8 Mass Storage

```

Sur un système standard les clés sont montées automatiquement dans /media

```
lsblk | grep media
```

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Avril 6, 2019, 9:25 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/3 "2019-04-06T21:25:04Z")

</div>

Hello  
Merci pour tes idées.  
Je vais les essayer et voir si ça peut m’aider dans ma démarche.  
Merci encore 🙂

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Avril 6, 2019, 9:28 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/4 "2019-04-06T21:28:59Z")

</div>

Re,

J’ai trouvé ce que je voulais faire 🙂 🙂 🙂

> ls /dev/[hs]d[a-z][0-9]

Après pour le sortir dans un fichier texte

`ls /dev/[hs]d[a-z][0-9] >>/tmp/test_clef_usb`

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Avril 7, 2019, 7:22 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/5 "2019-04-07T07:22:01Z")

</div>

> [@domoticity](#):
>
> Re,
> 
> J’ai trouvé ce que je voulais faire 🙂 🙂 🙂

je ne vois pas en quoi ça liste des clés usb

ça ne liste que mon disque dur 😂

```auto
ls /dev/[hs]d[a-z][0-9]
/dev/sda1 /dev/sda2 /dev/sda5 /dev/sda6

 sudo fdisk -l
       
Disque /dev/sda : 298,1 GiB, 320072933376 octets, 625142448 secteurs
Modèle de disque : Hitachi HTS72503
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x00038c4c

Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sda1 * 2048 40011775 40009728 19,1G 83 Linux
/dev/sda2 40011776 625142447 585130672 279G 5 Étendue
/dev/sda5 40013824 55717887 15704064 7,5G 82 partition d'échange Linux / Solaris
/dev/sda6 55719936 625141759 569421824 271,5G 83 Linux

```

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Avril 8, 2019, 9:31 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/6 "2019-04-08T21:31:01Z")

</div>

Chez moi ca voit mes deux clefs 🙂

---

<div class="post-metadata">

**Author:** ![anon97446390](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/b4bc9f/32.png) [@anon97446390](https://www.debian-fr.org/u/anon97446390)\
**Post date:** [Avril 8, 2019, 9:58 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/7 "2019-04-08T21:58:27Z")

</div>

Oui, mais pas uniquement non ?

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Avril 8, 2019, 10:14 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/8 "2019-04-08T22:14:53Z")

</div>

> [@grandtoubab](#):
>
> ls /dev/[hs]d[a-z][0-9]

je travaille sur des nanocartes du style raspberry,  
donc l’os est sur une sdcard,  
et avec le script mis en haut je ne vois pas cette dernière dedans,  
J’essaierai sur une machine virtuelle debian dans un «&nbsp;vrai pc&nbsp;» 🙂

---

<div class="post-metadata">

**Author:** ![lanig](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/c4cdca/32.png) [@lanig](https://www.debian-fr.org/u/lanig)\
**Post date:** [Avril 9, 2019, 9:47 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/9 "2019-04-09T09:47:29Z")

</div>

Tu peux peut-être regarder comment c’est programmé dans bashmount.

> **[GitHub - jamielinux/bashmount: Tool to mount and unmount removable media from the...](https://github.com/jamielinux/bashmount)**
>
> Tool to mount and unmount removable media from the command-line

---

<div class="post-metadata">

**Author:** ![dindoun](https://www.debian-fr.org/user_avatar/www.debian-fr.org/dindoun/32/4281_2.png) [@dindoun](https://www.debian-fr.org/u/dindoun)\
**Post date:** [Avril 9, 2019, 11:43 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/10 "2019-04-09T11:43:48Z")

</div>

salut  
tu pourrais aussi faire un  
`i=$(tail /var/log/messages |grep -i "Attached SCSI removable disk" |sed 's/.*\].*\[\(.*\)\]\ Attached\ SCSI\ removable\ disk.*/\1/') && fdisk -l /dev/$i |egrep "/dev/"$i"[0-9]" |sed "s/^\([^]*\)\ .*\ \([0-9a-fA-F][0-9a-fA-F]\)\ .*/\1 \2/"`  
ce qui donne sur une clé avec 2 partitions linux :  
/dev/sdf1 83  
/dev/sdf2 83

PS  
la variable i est égale à /dev/sdf  
j’ai mis un tail plutot qu’un cat car la variable i devient, par exemple,  
sdf sdg sdf sdf sdg sdf sdg sdf sdf sdf sdf sdf sdf sdf sdf sdf  
avec un cat  
il faut nettoyer un peu le code 🙂

PPS  
commentaire du code :

1. `i=$(tail /var/log/messages |grep -i “Attached SCSI removable disk”  
|sed ‘s/._]._[(._)]\ Attached\ SCSI\ removable\ disk._/\1/’)

1.1 tail /var/log/messages : on cherche dans les 10 dernières lignes du fichier messages, si on trouve la chaine de caractères Attached SCSI removable disk , ce qui donne par exemple

` Apr 9 13:30:34 de5A kernel: [2413.954981] sd 18:0:0:0: [sdf] Attached SCSI removable disk

1.2 A cette ligne on filtre et on garde sdf :en supposant que la ligne est  
` …]…[sdf] Attached SCSI removable disk…

1.3 finalement , i=sdf

1. fdisk -l /dev/$i |egrep “/dev/”$i"[0-9]" |sed “s/^([^]_)\  
._\ ([0-9a-fA-F][0-9a-fA-F])\ .\*/\1 \2/”`

2.1 fdisk -l /dev/$i donne les infos sur /dev/sdf,

2.2 ` |egrep “/dev/”$i"[0-9]" filtrées pour n’avoir que celles avec des partitions ( on enlève /dev/sdf, on garde /dev/sdf1 )  
on a alors

`/dev/sdf1 2048 10242047 10240000 4,9G 83 Linux  
/dev/sdf2 10242048 61472767 51230720 24,4G 83 Linux

2.3 `|sed "s/^\([^]*\)\ .*\ \([0-9a-fA-F][0-9a-fA-F]\)\ .*/\1 \2/"`  
on filtre en supposant que la ligne s’écrit  
blahblah sans espace , espace , 2 hexas , espace ; on garde blahblah et les 2 hexas

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Avril 9, 2019, 11:58 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/11 "2019-04-09T11:58:47Z")

</div>

Merci 🙂 je jetterai un coups d’oeil

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Avril 9, 2019, 11:59 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/12 "2019-04-09T11:59:14Z")

</div>

Ça c’est du code lol.  
Je vais prendre le temps de le comprendre et l’essayer.  
Merci tout cas 🙂

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Avril 11, 2019, 9:59 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/13 "2019-04-11T21:59:28Z")

</div>

Re à toutes et tous 🙂

J’arrive à éditer la liste des disques et clefs branchées sur ma tinkerboard via le script en dessous.  
(en tout cas ça fonctionne sur ma nanocarte 🙂 )

```
#Recupère les infos sur les clefs usb
if sudo ls /dev/[hs]d[a-z][0-9] >>$resultat;then
	echo "ok"
	echo "fin" >>$resultat
else
	echo "echec" >>$resultat
	ledoff
	exit
fi

```

Maintenant, je m’attaque à une autre chose : récupérer les capacités de chaque disque.  
en utilisant fdisk -l /dev/sdb1 j’obtiens :

```
Disk /dev/sdb1: 14.7 GiB, 15733127168 bytes, 30728764 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x69205244

```

Et en fait, je cherche à extraire cette partie seulement :

`/dev/sdb1: 14.7 GiB`

J’ai cherché les commandes awk, cut, grep mais en vain, je ne les manipule pas encore bien.

Si quelqu’un a une idée je le remercie d’avance 🙂

---

<div class="post-metadata">

**Author:** ![dindoun](https://www.debian-fr.org/user_avatar/www.debian-fr.org/dindoun/32/4281_2.png) [@dindoun](https://www.debian-fr.org/u/dindoun)\
**Post date:** [Avril 12, 2019, 3:12 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/14 "2019-04-12T15:12:00Z")

</div>

u ntruc genre

```
fdisk -l /dev/sda1 |head -n 1|sed 's#.*/dev/\([^]*\)[^0-9]\([0-9].*\)\ GiB.*#/dev/\1 \2 GiB#'

```

/dev/sda1 : 29,3 GiB  
sed est vraiment le mieux : multitache , multiutilisation, simple à mettre en oeuvre

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Avril 12, 2019, 4:08 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/15 "2019-04-12T16:08:52Z")

</div>

moi je m’amuse avec cut

```
sudo fdisk -l /dev/sda1 |head -1|cut -dB -f 1

```

_sudo fdisk -l /dev/sda1 |head -1|cut -dB -f 1_  
_Disque /dev/sda1 : 19,1 Gi_

ou plus simple pour l’ensemble du disque

`sudo fdisk -l |head -1|cut -c 1-28`

_sudo fdisk -l |head -1|cut -c 1-28_  
_Disque /dev/sda : 298,1 GiB_

---

<div class="post-metadata">

**Author:** ![dindoun](https://www.debian-fr.org/user_avatar/www.debian-fr.org/dindoun/32/4281_2.png) [@dindoun](https://www.debian-fr.org/u/dindoun)\
**Post date:** [Avril 12, 2019, 4:23 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/16 "2019-04-12T16:23:41Z")

</div>

héhé  
mon man cut ne donne rien avec -dB 🙂 héhé normal, c’est B qui coupe  
j’aime bien cut aussi mais , comme toi ici , presque uniquement quand je ne garde que le début .

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Avril 12, 2019, 4:43 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/17 "2019-04-12T16:43:39Z")

</div>

Mieux avec une clé usb connectée

`sudo fdisk -l |grep Disque|cut -c 1-28`

sudo fdisk -l |grep Disque|cut -c 1-28  
_Disque /dev/sda : 298,1 GiB_  
_Disque /dev/zram0 : 128 MiB_  
_Disque /dev/zram1 : 128 MiB_  
_Disque /dev/sdb : 3,7 GiB,_

Mais c’est pas satisfaisant car le nombre de caractères édité en sortie dépends de la taille du disque, à affiner donc.

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Avril 12, 2019, 8:22 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/18 "2019-04-12T20:22:21Z")

</div>

> [@dindoun](#):
>
> ntruc genre
> 
> ```auto
> fdisk -l /dev/sda1 |head -n 1|sed 's#.*/dev/\([^]*\)[^0-9]\([0-9].*\)\ GiB.*#/dev/\1 \2 GiB#'
> 
> ```
> 
> /dev/sda1 : 29,3 GiB  
> sed est vraiment le mieux : multitache , multiutilisation, simple à mettre en oeuvre

Hello  
Merci pour ton aide 🙂  
Cependant sur ma machine ca ne fonctionne pas, ca me renvoie une ligne vide ☹

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Avril 12, 2019, 8:24 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/19 "2019-04-12T20:24:34Z")

</div>

> [@grandtoubab](#):
>
> Mieux avec une clé usb connectée
> 
> `sudo fdisk -l |grep Disque|cut -c 1-28`
> 
> sudo fdisk -l |grep Disque|cut -c 1-28  
> _Disque /dev/sda : 298,1 GiB_  
> _Disque /dev/zram0 : 128 MiB_  
> _Disque /dev/zram1 : 128 MiB_  
> _Disque /dev/sdb : 3,7 GiB,_
> 
> Mais c’est pas satisfaisant car le nombre de caractères édité en sortie dépends de la taille du disque, à affiner donc.

Hello  
Merci pour ton aide 🙂  
Ca se rapproche de ce que je cherche

```
 root@diagbox:/diagbox/web/tmp# fdisk -l /dev/sda5 | grep Disk | cut -c 1-28
Disk /dev/sda5: 14.3 GiB, 15
Disklabel type: dos
Disk identifier: 0x69205244

```

Le petit peaufinage serait à enlever les dernieres lignes et le 15 en fin de première 🙂  
Je sais qu’il y a une commande qui permet de remplacer le Disk, je vais la chercher 🙂  
Merci encore en tout cas

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Avril 12, 2019, 9:25 UTC](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955/20 "2019-04-12T21:25:28Z")

</div>

J’ai réussi je pense 😛

qu’en pensez vous?

```
#!/bin/bash !/bin/bash
function ledon
{
sudo python /diagbox/web/scripts/gpio/led_32_on.py
sudo python /diagbox/web/scripts/gpio/led_10_on.py
}
function ledoff
{
sudo python /diagbox/web/scripts/gpio/led_32_off.py 
sudo python /diagbox/web/scripts/gpio/led_10_off.py
}

readonly resultat=/diagbox/web/tmp/resultat_choix_usb 
readonly resultat_capacite=/diagbox/web/tmp/resultat_capacite_usb
readonly resultat1=/diagbox/web/tmp/resultat_choix_usb1 

#Allume les leds
ledon

#Verifie presence de fhichiers résultats antérieurs
	#recupération des clefs usb
if [-f $resultat];then
	sudo rm $resultat 
fi

if [-f $resultat1];then
	sudo rm $resultat1 
fi
	#capacités
if [-f $resultat_capacite];then
	sudo rm $resultat_capacite
fi

#Recupère les infos sur les clefs usb
if sudo ls /dev/[hs]d[a-z][0-9] >>$resultat;then
	echo "ok"
	echo "fin" >>$resultat
else
	echo "echec" >>$resultat
	ledoff
	exit
fi

if sudo ls /dev/[hs]d[a-z][0-9] >>$resultat1;then
	echo "ok"
else
	echo "echec" >>$resultat1
	ledoff
	exit
fi

#Recupérer la capacité des clefs usb
while read line 
do 
sudo fdisk -l $line | sed 's/Disk/clef usb/g' | grep "clef usb" | cut -d ' ' -f1-5 | sed '2,20d' >>$resultat_capacite
done <$resultat1

exit
```

[Page suivante](https://www.debian-fr.org/t/lister-les-clefs-usb-branchees/78955.md?page=2)
