Voici un p'tit script permettant de lister les modules nécessaire au fonctionnement du matos PCI et USB de votre machine. J'avais trouvé une astuce sur un blog dont j'ai perdu l'adresse permettant de trouver le module pour un materiel. Mais ça me gonflait de le faire à chaque fois pour chaque matos, là ça automatise et c'est plus mieux. Bon un script de ce genre a déjà dû être fait mais je me faisais chié et j'avais envie d'apprendre à scripter. Voici le code:
Code : Tout sélectionner
#!/bin/bash
## Script affichant les modules permettant le fonctionnement des appareils branchés sur les ports PCI et USB
## Note: Tous les \033[**m servent à la coloration du texte
echo
echo
echo " Recherche des modules des périphériques du bus PCI: "
echo
## Première boucle permettant d'afficher les modules des périphériques des ports PCI
while [ "$nombre_lignes" != `lspci | wc -l` ]
do
## Le tableau en question "materiel_pci[]" va stocker chaque ligne sortie par sed de la commande lspci
nombre_lignes=$(($nombre_lignes + 1))
materiel_pci[$nombre_lignes]=`lspci | sed -n ''$nombre_lignes'p'`
echo -e "\033[01m ${materiel_pci[$nombre_lignes]}\033[00m"
## De ces lignes on récupère juste l'addresse que l'on stock dans cette variable
kernel_addr=`echo ${materiel_pci[$nombre_lignes]} | cut -d" " -f 1`
#echo $kernel_addr
## On récupère ensuite son identifiant numérique
id_num=`lspci -s $kernel_addr -n | cut -d" " -f 3`
#echo $id_num
## On sépare l'identifiant du fabricant de l'identifiant du matériel
id_vendor=`echo $id_num | cut -d: -f 1`
#echo "id vendeur: $id_vendor"
id_device=`echo $id_num | cut -d: -f 2`
#echo "id materiel: $id_device"
## Et on va chercher le module correspondant
module=$(grep $id_vendor /lib/modules/`uname -r`/modules.pcimap | grep $id_device | cut -d" " -f 1)
## Si un module n' existe pas pour le matos, on le dit sinon on l'affiche
if [ "$module" = "" ]; then
{
echo -e "\033[31m Aucun module trouvé pour ce matériel\033[00m"
}
else
{
echo -e "\033[32m Module: $module \033[00m"
}
fi
echo
done
echo
echo "Recherche des modules des périphérique des ports USB: "
echo
# Seconde boucle pour le matos USB
while [ "$nbre_lignes" != `lsusb | wc -l` ]
do
## Toujours le traitement par tableau
nbre_lignes=$(($nbre_lignes + 1))
materiel_usb[$nbre_lignes]=`lsusb | sed -n ''$nbre_lignes'p'`
echo -e "\033[01m ${materiel_usb[$nbre_lignes]}\033[00m"
## Sauf que la on peut récupérer directement les identifiants numériques
id_numerique=`echo ${materiel_usb[$nbre_lignes]} | cut -d" " -f 6`
#echo $id_numerique
# On sépare l'identifiant du vendeur de celui du materiel
id_vendor_usb=`echo $id_numerique | cut -d: -f 1`
id_device_usb=`echo $id_numerique | cut -d: -f 2`
## Puis on cherche le module correspondant
module_usb=$(grep $id_vendor_usb /lib/modules/`uname -r`/modules.usbmap | grep $id_device_usb | cut -d" " -f 1)
## Pour finir par l'affichage
if [ "$module_usb" = "" ]; then
{
echo -e "\033[31m Aucun module trouvé pour ce périphérique\033[00m"
}
else
{
echo -e "\033[32m Module: $module_usb \033[00m"
}
fi
done
exit 0;
Et je voudrais savoir si selon vous, il trouve absolument tous les modules nécessaire ( exepté les proprios évidemment ).
Vous pouvez l'utiliser bien sûr, mais ce serait cool de me rapporter d'éventuels bugs.
Merci bien
T'chô
EDIT: Et j'oubliais, dites moi si la coloration ne vous gêne pas.