Pages : 1
#1 Le 04/06/2006, à 23:03
- d.loic
[Resolu]Script "intelligent"
Bonjour à tous !
Bon j'ai essayé de trouver sur le net une solution à mon problème, mais rien. Alors le voici :
Je souhaiterais créer un script, par exemple pour lancer le wifi, que je couplerai à une icone. Seulement mon but est que si le wifi est déjà lancé, le script le coupe, et inversement, si wifi non lancé le fait de lancer le script lance un sudo ifup wlan0.
Peut etre quelque chose à tenter avec status (pour certains services...), mais je ne sais pas trop.
Je vous remercie pour vos réponses.
Loïc
Dernière modification par d.loic (Le 25/10/2006, à 21:20)
Loïc
Hors ligne
#2 Le 05/06/2006, à 09:08
- mesmento
Re : [Resolu]Script "intelligent"
Essaye ceci :
touch wifi.sh
et tape ceci dans le fichier wifi.sh :
#!/bin/sh -
WLAN='sudo ifup wlan0'
if WLAN
then
echo "le wifi est déjà fonctionnel"
exit
else
sudo ifup wlan0
echo "wifi activé"
fi
ensuite donne au fichier des droits d'execution :
chmod +x wifi.sh
Je n'ai pas essayé le script donc je ne sais pas s'il fonctionne :\
Hors ligne
#3 Le 05/06/2006, à 10:44
- d.loic
Re : [Resolu]Script "intelligent"
Je te remercie pour ta réponse ! Mais elle ne fonctionne pas. En effet, le script passe toujours dans la première boucle.
if $WLAN
execute la commande "ifup wlan0" et ne test pas.
Si quelqu'un a une autre idée ???
J'avais pensé au code retour mais il est égal à zéro, meme si le wifi déjà activé ....
Loïc
Hors ligne
#4 Le 05/06/2006, à 11:07
- mesmento
Re : [Resolu]Script "intelligent"
peut-être qu'un test sur les processus en cours serait la solution ?
quel est le nom du processus lancé par ta commande ?
il faudrait un script agissant en fonction du code retour de "ps -A | grep le_processus" , non ?
Voici un script pour faire cela (je viens de le tester avec un processus vim, normalement il fonctionne ). Il te suffit de remplacer "le_processus", par le nom de processus envoyé par ton application.
#!/bin/sh -
# Cherche dans les processus si "le_processus" existe. Redirige la sortie et l'erreur standard vers /dev/null
ps -A | grep le_processus > /dev/null 2>&1
# lance le wifi s'il ne l'est pas déjà
if [ $? = 1 ]
then
echo "Lancement du wifi"
sudo ifup wifi0
else
echo "déjà lancé"
fi
exit
Dernière modification par mesmento (Le 05/06/2006, à 11:25)
Hors ligne
#5 Le 05/06/2006, à 13:04
- d.loic
Re : [Resolu]Script "intelligent"
Bon je te remercie mesmento. Ca fonctionne enfin, meme si je ne suis pas trop pour ce genre de solution, un peu proche de la bidouille. En effet je me sert d'un processus "dhclient", qui se lance lors de la connection wifi. Seulement ce processus peut surement etre lancé par autre chose.
Voici le code complet du script :
#!/bin/sh -
# Cherche dans les processus si "dhclient3" existe. Redirige la sortie et l'erreur standard vers /dev/null
ps ax | grep "dhclient3 -pf /var/run/dhclient.wlan0.pid -lf /var/li" > /dev/null 2>&1
# lance le wifi s'il ne l'est pas déjà, car commande infruecteuse, retour =1
if [ $? = 1 ]
then
#on lance le wifi
sudo ifup wlan0
else
#on coupe le wifi
sudo ifdown wlan0
fi
#on quitte
exit
Ca fonctionne tout de meme. Pour aller plus loin, sais tu si je pourrais (juste des pistes) changer l'icone en fonction, du genre je clique sur l'icone, ca lance le wifi et l'icone devient verte. Dans le cas contraire, ca le coupe et elle devient rouge.
On pourrait ensuite créer un petit logiciel ou script pour automatiser la création de ce genre d'icone, pour lancer des services. Ca cacherai en effet la omplexite pour certaines personnes, et je pense que ca pourrait etre utile.
Merci beaucoup
Loïc
Hors ligne
Pages : 1