Script shell : gestionnaire wifi
philpep-tlse
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai écris un petit script shell (mon premier de plus de 10 lignes). Habitué de la console je voulais me lancer dans la progamation de scripts shell. Puis devant l'offre en matière de gestionnaire wifi je me suis dit que j'aillais voir si je pouvais faire quelque chose en console...
- Network manager de Gnome plante avec certaines cartes wifi, notament celles en usb.
- wicd est très sympa mais en gtk et il nécessite python + quelques libs
- Kwifi de KDE est un peu comme celui de Gnome
Puis j'aime bien les applis consoles legères... (je suis sous fvwm donc j'essaie d'éviter toutes les applis un peu trop gtk/qt)
Fonctionalitées :
-Détection de l'interface wifi
-Detection des reseau et s'il y a besoin de clef wep
-La connexion au reseau de son choix
Bref voilà le script :
Voila la chose.
J'aimerais que vous testez voir si c'est utilisable sur diverses distributions, parce que j'utilise beaucoup les filtres.
Puis je n'ai jamais eu de cours d'info alors si vous voyez des choses incoherentes dites le moi.
Si vous trouvez des bug ça m'interesse !
Je suis ausi avide d'astuces de progamation !
Mes projet pour la suite :
-Intégration du code dans une interface semi graphique (avec dialog et/ou tput)
-Un choix ip statique avec création d'un fichier /etc/network/interfaces
Merci pour vos réactions. :)
J'ai écris un petit script shell (mon premier de plus de 10 lignes). Habitué de la console je voulais me lancer dans la progamation de scripts shell. Puis devant l'offre en matière de gestionnaire wifi je me suis dit que j'aillais voir si je pouvais faire quelque chose en console...
- Network manager de Gnome plante avec certaines cartes wifi, notament celles en usb.
- wicd est très sympa mais en gtk et il nécessite python + quelques libs
- Kwifi de KDE est un peu comme celui de Gnome
Puis j'aime bien les applis consoles legères... (je suis sous fvwm donc j'essaie d'éviter toutes les applis un peu trop gtk/qt)
Fonctionalitées :
-Détection de l'interface wifi
-Detection des reseau et s'il y a besoin de clef wep
-La connexion au reseau de son choix
Bref voilà le script :
#!/bin/bash echo "############## Script wifi ##############" echo "## ##" echo "##Bug report NOSPAM ##" echo "## ##" echo "## Ce script doit être lancé avec les ##" echo "## droits root. Si vous avez configuré ##" echo "## sudo vous pouver le lancer avec ##" echo "## sudo ./wifish.sh ou sudo sh wifis.sh##" echo "## Sinon vous passez en root avec la ##" echo "## commande habituelle : su - ##" echo "#########################################" ## Detection de l'interface wifi (Eth) echo -e "\nDetection de l'interface wifi" Eth=`iwconfig 2>/dev/null| cut -d' ' -f1` sleep 1 echo -e "\nOK, votre interface est $Eth" ## Detection des essid et des clef qui vont avec dans le fichier essid.lst echo -e "\nDetection des reseau wifi :" echo -e "\nn ESSID KEY" iwlist $Eth scan 2>/dev/null | cut -c21- | grep -v "^[MBQFIPA ]" | grep -v "^Ex" | cut -d':' -f2 | cut -d'"' -f2 > essid.tmp MaxLst=`wc -l < essid.tmp` MaxLst=$(($MaxLst-2)) Hidden=0 echo -e "<essid>:<key>" > essid.lst i=2 j=1 while [ "$i" -le "$MaxLst" ] do Ssid=`sed -n $i'p' essid.tmp` Encrypt=`sed -n $(($i+1))'p' essid.tmp` if [ "$Ssid" = "<hidden>" ]; then { Hidden=$(($Hidden+1)) } else { echo "$Ssid:$Encrypt" >> essid.lst echo -e "\n$j $Ssid $Encrypt" j=$(($j+1)) } fi i=$(($i+2)) done ## Choix du reseau, avec Essid=essid et Key=on/off echo -en "\nQuel reseau ? [1-$(($j-1))]" read Choix Essid=`sed -n $(($Choix+1))'p' essid.lst | cut -d':' -f1` Key=`sed -n $(($Choix+1))'p' essid.lst | cut -d':' -f2` echo -e "\nVous avez choisis le reseau $Essid" ## Création du fichier wifi.log echo -e "########## Fichier wifi.log ##########" > wifi.log echo -e "\n## Votre interface wifi est $Eth, vous voulez vous connecter au reseau $Essid avec key=$Key ##" >> wifi.log echo -e "\n## Commande iwconfig $Eth essid $Essid (Choix de l'Essid) ##" >> wifi.log iwconfig $Eth essid $Essid >> wifi.log 2>&1 err=$? if [ "$err" = 0 ]; then { case "$Key" in on ) echo -e "\nClef wep ?"; read Key; iwconfig $Eth key $Key >> wifi.log 2>&1;; off ) echo -e "\nPas besoin de clef wep !";; * ) echo " ";; esac echo -e "\n## Comande dhclient (Pour la connexion en Dhcp) ##" >> wifi.log dhclient $Eth >> wifi.log 2>&1 ## Cette comande ne revoie jamais d'érreur car $?=0 dans tous les cas ???? err=`cat wifi.log | grep -c "No DHCPOFFERS"` ## Pour corriger : err=1 si erreur } else break fi ## Message de réussite ou d'echec if [ "$err" = 0 ]; then { IP=`ifconfig $Eth | grep "inet adr" | cut -d':' -f2 | cut -d'B' -f1` ## On trouve l'adresse ip echo -e "\nVous être maintenant connecté à l'essid $Essid avec l'adresse ip $IP" echo "Aurevoir !" } else { while [ "$err" != 0 ]; do echo -en "\nIl il y a eu une érreur, voulez vous voir le fichier de log ? [O/N]" read log case "$log" in o | O ) clear; cat wifi.log && err=0;; n | N ) echo -e "\nAurevoir !" && err=0;; * ) echo -e "\nJe n'ai pas compris, vous pouvez répeter ?";; esac done } fi ## Netoyage rm wifi.log essid.lst essid.tmp exit 0
Voila la chose.
J'aimerais que vous testez voir si c'est utilisable sur diverses distributions, parce que j'utilise beaucoup les filtres.
Puis je n'ai jamais eu de cours d'info alors si vous voyez des choses incoherentes dites le moi.
Si vous trouvez des bug ça m'interesse !
Je suis ausi avide d'astuces de progamation !
Mes projet pour la suite :
-Intégration du code dans une interface semi graphique (avec dialog et/ou tput)
-Un choix ip statique avec création d'un fichier /etc/network/interfaces
Merci pour vos réactions. :)
A voir également:
- Shell wifi
- Classic shell - Télécharger - Personnalisation
- Changer wifi chromecast - Guide
- Voir mot de passe wifi android - Guide
- Adresse mac wifi - Guide
- Volte wifi - Guide
5 réponses
Salut , j'utilise la distribution NuTyX et ton script fonctionne dessus ; juste remplacé dhclient par dhcpcd pour nutyx et ça roule impec
Merci
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut.
une remarque pour faire suite ç celle de Geantbrun :
Il faudrait avant tout chose tester si les exécutables utilisés exists (dhclient, iwconfig...)
et éventuellement réflechir à mettre dans des variables au début (type makefile) les différents programmes, comme ça, si l'utilisateur veux en changer c'est simple. exemple :
une remarque pour faire suite ç celle de Geantbrun :
Il faudrait avant tout chose tester si les exécutables utilisés exists (dhclient, iwconfig...)
et éventuellement réflechir à mettre dans des variables au début (type makefile) les différents programmes, comme ça, si l'utilisateur veux en changer c'est simple. exemple :
alias DHCP=dhcpclient if [ ! which DHCP ] then echo "le programme de dhcp est introuvable" exit 1 fi