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 »
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
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
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
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.
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 .
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
#!/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