Hello
Merci pour tes idées.
Je vais les essayer et voir si ça peut m’aider dans ma démarche.
Merci encore
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
je ne vois pas en quoi ça liste des clés usb
ça ne liste que mon disque dur
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
Chez moi ca voit mes deux clefs
Oui, mais pas uniquement non ?
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 “vrai pc”
Tu peux peut-être regarder comment c’est programmé dans bashmount.
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 :
- `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
- 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
Merci je jetterai un coups d’oeil
Ça c’est du code lol.
Je vais prendre le temps de le comprendre et l’essayer.
Merci tout cas
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
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
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
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 .
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
Cependant sur ma machine ca ne fonctionne pas, ca me renvoie une ligne vide
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
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
Pourquoi ne pas utiliser bashmount ?
J’utilise $ lsblk
si ça peut t’aider