Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile


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 smile

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 smile


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 smile

Merci encore wink

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 wink

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