#1 Le 26/03/2009, à 23:53
- flobard
[SHELL]Afficher une icône sur le tableau de bord sans interrompre
Bonjour tout le monde !
Je suis en train de me créer un petit script pour m'afficher si oui ou non ma connexion à internet est bien active (je passe par un hotspot).
Je souhaiterais afficher une icône verte ou rouge, selon qu'elle le soit ou non, sur le tableau de bord (à droite)...
J'ai trouvé la commande zenity --notification window-icon mais il se pose deux problèmes :
_ après l'affichage, le script se met en pause jusqu'à ce que je clique dessus, ce qui est assez ennuyeux... En effet j'aimerais la mettre à jour, mais ce ne sera pas possible avec cette pause
_ comment supprimer une notification à un moment précis (pour la mettre à jour) ?
Merci d'avance !
Bonne soirée
EDIT voici le script :
#!/bin/bash
check=0
a=1
while a==1; do
if wget --max-redirect=0 --tries=3 -T 3 64.233.169.103; then
echo "oui"
rm index.html
check=1
else
if check==1; then
zenity --notification --text 'La connexion internet est inactive'
check=0
fi
echo "non"
fi
sleep 120
done
Dernière modification par flobard (Le 27/03/2009, à 10:53)
Hors ligne
#2 Le 27/03/2009, à 00:29
- herberts
Re : [SHELL]Afficher une icône sur le tableau de bord sans interrompre
pourrait tu poster ton script tant qu'à faire, ça pourrait donner des idées sur comment résoudre ton souci.
Hors ligne
#3 Le 27/03/2009, à 10:52
- flobard
Re : [SHELL]Afficher une icône sur le tableau de bord sans interrompre
#!/bin/bash
check=0
a=1
while a==1; do
if wget --max-redirect=0 --tries=3 -T 3 64.233.169.103; then
echo "oui"
rm index.html
check=1
else
if check==1; then
zenity --notification --text 'La connexion internet est inactive'
check=0
fi
echo "non"
fi
sleep 120
done
Voilà où j'en suis
Je sais que ce n'est pas parfait : c'est mon premier script...
La boucle infinie doit pouvoir être faite différemment.
Les echo sont là pour tester.
Lorsque la notification s'affiche, il n'y a pas de non qui s'écrit dans le shell.
Ce que j'aimerais c'est rajouter une notification quand la condition est vérifiée
Merci d'avance !
Hors ligne
#4 Le 27/03/2009, à 11:09
- herberts
Re : [SHELL]Afficher une icône sur le tableau de bord sans interrompre
Alors déjà voici un script un peu allégé qui fait la même chose :
#!/bin/sh
a=1
while a==1; do
if wget --max-redirect=0 --tries=3 -T 3 64.233.169.103; then
echo "oui"
rm index.html
else
zenity --notification --text 'La connexion internet est inactive' &
echo "non"
fi
sleep 120
done
Et ce qui te manquait c'est le & à la fin de la commande zenity qui permet de lancer la notification en arrière plan.
Ensuite tu utilises quoi comme environnement de bureau ? parce qu'en général, il y a des applets qui te disent si t'es connecté ou pas.
Hors ligne
#5 Le 27/03/2009, à 11:50
- herberts
Re : [SHELL]Afficher une icône sur le tableau de bord sans interrompre
En fait voilà qui devrait te convenir :
#!/bin/sh
a=1
while a==1; do
killall zenity
if wget --max-redirect=0 --tries=3 -T 3 64.233.169.103; then
zenity --notification --window-icon=/chemin/vers/l'icone/de/connexion/OK.png --text="connexion OK" &
rm index.html
else
zenity --notification --window-icon=//chemin/vers/l'icone/de/déconexion.png --text="Connexion inactive" &
fi
sleep 120
done
Je regarde un peu pour afficher une fenêtre de notification au changement d'état en plus, si ça t'intéresse.
Hors ligne
#6 Le 27/03/2009, à 12:04
- flobard
Re : [SHELL]Afficher une icône sur le tableau de bord sans interrompre
Merci beaucoup c'est parfait !
J'utilise Gnome (si c'est ta question)... Mais t'inquiète, ce petit code me sufira largement
Merci encore
Hors ligne
#7 Le 27/03/2009, à 12:36
- herberts
Re : [SHELL]Afficher une icône sur le tableau de bord sans interrompre
Et tu te connectes avec network manager ?
Hors ligne
#8 Le 27/03/2009, à 13:37
- herberts
Re : [SHELL]Afficher une icône sur le tableau de bord sans interrompre
Tiens, tu peux essayer ceci :
C'est le même que tout à l'heure, sauf que j'ai rajouté une petite fonction. Si le nouvel état est différent de l'état précédent il t'affiche une petite notification sur l'OSD pendant 5 secondes pour te prévenir que la connexion s'est arrêté ou a reprise. Et ça n'affiche rien si la connexion se maintient ou si elle ne se reconnecte pas.
Je sais pas si je suis très clair, le plus simple est que tu essayes
#!/bin/sh
a=1
while a==1; do
killall zenity
if wget --max-redirect=0 --tries=3 -T 3 64.233.169.103; then
zenity --notification --window-icon=/chemin/vers/l'icone/de/connexion/OK.png --text="connexion OK" &
rm index.html
if ((b==1)); then
notify-send Message 'La connexion est revenue'
fi
b=0
c=1
else
zenity --notification --window-icon=/chemin/vers/l'icone/de/déconexion.png --text="Connexion inactive" &
if ((c==1)); then
notify-send Message 'La connexion a été interrompu'
fi
c=0
b=1
fi
sleep 120
done
Hors ligne
#9 Le 04/02/2010, à 12:37
- wild dagger
Re : [SHELL]Afficher une icône sur le tableau de bord sans interrompre
Bonjour,
Pour les besoins de mon petit home server ubuntu, je cherche le même genre de script mais qui enverrait un sms si la connexion internet est coupée. (Il va de soit que le sms est envoyé via un téléphone portable constamment couplé avec l'ordinateur qui contient ce script).
Hors ligne