#1 Le 19/12/2009, à 12:42
- shakipu
[Résolu] [Script] Démarrer un script quand connexion active
Bonjour à tous,
Je suis en train d'arranger mon bureau d'une manière assez interactive : un cube avec sur chaque face, des screenlets dédiées à certaines utilisation (une face pour le multimédia, une face pour les fichiers/commandes, une face pour le travail, une face pour Internet).
De plus, c'est dans un environnement minimal que je compte faire tourner ce bureau : compiz standalone + cairo-dock + screenlet + xfce4-panel.
Pour l'instant, je m'en sors assez bien mais voila, certains screenlets utilisent Internet (entre autre Youtube et RadioFM trouvé sur Google Gadget) et ne démarrent pas si Internet n'est pas actif. Le problème c'est que je suis sur un PC portable que j'emmène partout, même dans des endroits où il n'y a pas Internet (si si ça existe). Du coup, mes screenlets buggent.
Pour remédier à ce problème, je lance 2 scripts au démarrage : un qui démarre les screenlets qui n'ont pas besoin d'Internet et un qui démarre les screenlets qui ont besoin d'Internet.
J'aurais besoin d'aide pour ce deuxième script. En effet, j'aimerais que ce script démarre les screenlets SEULEMENT quand la connexion est active (et à l'occasion, les arrête quand la connexion n'est plus). Je cherche je cherche mais je ne trouve pas comment faire. Auriez-vous une idée ?
Merci d'avance
Gros bisous à la communeauté
Dernière modification par shakipu (Le 11/01/2010, à 11:51)
Nous sommes tous des pécheurs face à l'Ethernet...
Hors ligne
#2 Le 19/12/2009, à 12:49
- wido
Re : [Résolu] [Script] Démarrer un script quand connexion active
Bonjour,
tu fais un test de ping sur le site google par exemple toutes les X minutes,
si le test réussi je lance les screenlets sinon je retourne à tester le ping.
Hors ligne
#3 Le 19/12/2009, à 12:55
- shakipu
Re : [Résolu] [Script] Démarrer un script quand connexion active
Ça risque pas de ralentir un peu le système ?
En tout cas merci pour ta réponse, je pensais à ça mais j'étais pas trop sûr, on sait jamais, si jamais Google bug. Mais le problème c'est qu'à la fac, le réseau n'est pas direct : le réseau wifi est ouvert mais il faut se logger à travers une interface internet pour pouvoir accéder à Internet... Dans ce cas, je ne suis pas sûr qu'un ping fonctionne...
Et j'avoue être nul en programmation. Je vais tenter ce que je peux ^^
Nous sommes tous des pécheurs face à l'Ethernet...
Hors ligne
#4 Le 19/12/2009, à 14:14
- nesthib
Re : [Résolu] [Script] Démarrer un script quand connexion active
pour la connexion mise en œuvre détaillée sur ce post (sans ping, mais tu peux ajouter un ping si tu veux être sûr d'avoir une connexion internet et pas seulement réseau ce revient souvent au même)
Dernière modification par nesthib (Le 19/12/2009, à 14:17)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#5 Le 19/12/2009, à 14:24
- Tomzz
Re : [Résolu] [Script] Démarrer un script quand connexion active
Bonjour,
J'en ai un ici: http://www.2aide.fr/Dokuwiki/doku.php?i … _connexion.
Ça marche bien, mais il doit y avoir plus élégant
Hors ligne
#6 Le 19/12/2009, à 15:17
- nesthib
Re : [Résolu] [Script] Démarrer un script quand connexion active
@Tomzz : une petite erreur de frappe dans ton script
sleep 10http://www.2aide.fr/Dokuwiki/doku.php
sinon des petites suggestions pour améliorer ton script :
- tu peux prendre le code de retour de ping comme signe de succès/échec :
if ping -c1 google.fr >/dev/null; then echo OK ; else echo NOK ; fi
- tu peux même intégrer ton test dans le while :
a=0
while [ $a -lt 2 ] && ! ping -c1 google.fr >/dev/null
do
echo CHECK $a
((a++))
sleep 1
done
NB tu peux tester les commandes en remplaçant google.fr par 192.168.1.1 (si c'est l'adresse de ton routeur) par ex.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#7 Le 19/12/2009, à 15:25
- Tomzz
Re : [Résolu] [Script] Démarrer un script quand connexion active
merci nsthib.
sleep 10http://www.2aide.fr/Dokuwiki/doku.php
Je me demande d'où je l'ai sortie celle là
Le reste, je corrige dans la foulée
Hors ligne
#8 Le 19/12/2009, à 16:32
- Tomzz
Re : [Résolu] [Script] Démarrer un script quand connexion active
Bon, j'ai un peu repris, j'ai fais:
ping -c1 google.fr >/dev/null
if [ $? != "0" ]; then
Ta commande ne fonctionnais pas dans mon script, mais je viens de comprendre pourquoi:
En fait je ne sais pas écrire son contraire
Dans l'idée, je voudrais:
if ! ping -c1 google.fr >/dev/null; then ...
Une question, quel est l'intérêt de renvoyer vers /dev/null vu que de toute façon le résultat de la commande ping n'est pas affiché ?
Ensuite, je n'ai pas mis le ping dans la boucle parce que while ne fait que compter le nombre de réitération du script, en effet je trouvais dommage de pinguer google pendant des heures alors que, pour cette fois, on n'a pas l'intention de se connecter.
Du coup, j'ai rajouté une condition à l'exécution des commandes finales, en effet, sans celle-ci, les commandes s'exécutaient au bout de 10 min même si on n'avait pas de connexion active.
Dernière modification par Tomzz (Le 19/12/2009, à 16:40)
Hors ligne
#9 Le 19/12/2009, à 16:53
- shakipu
Re : [Résolu] [Script] Démarrer un script quand connexion active
Merci Nesthib, je pense que ton script me suffira. Je l'ai testé mais il y a quand même un bug au démarrage de la session (puisque ce script démarre au démarrage de la session). Je n'arrive pas à savoir ce que c'est puisque ça revient à GDM sans rien dire. Comme si une commande bloquait...
Peut être sais-tu comment l'épurer pour que ça fonctionne sans problème ?
EDIT : j'essaye de trouver par moi même. Je pense qu'on peut épurer un peu le tout en précisant les interfaces réseaux, histoire que la recherche soit un peu moins longue et demande moins de commandes.
Dernière modification par shakipu (Le 19/12/2009, à 16:59)
Nous sommes tous des pécheurs face à l'Ethernet...
Hors ligne
#10 Le 19/12/2009, à 17:07
- nesthib
Re : [Résolu] [Script] Démarrer un script quand connexion active
Bon, j'ai un peu repris, j'ai fais:
ping -c1 google.fr >/dev/null if [ $? != "0" ]; then
Ta commande ne fonctionnais pas dans mon script, mais je viens de comprendre pourquoi:
En fait je ne sais pas écrire sont contraire
en précédant ton test par !
Dans l'idée, je voudrais:
if ! ping -c1 google.fr >/dev/null; then ...
Une question, quel est l'intérêt de renvoyer vers /dev/null vu que de toute façon le résultat de la commande ping n'est pas affiché ?
euh… chez moi ping -c1 … affiche une sortie, donc la redirection /dev/null permet de l'éliminer mais rien ne t'empêche de l'enlever
Ensuite, je n'ai pas mis le ping dans la boucle parce que while ne fait que compter le nombre de réitération du script, en effet je trouvais dommage de pinguer google pendant des heures alors que, pour cette fois, on n'a pas l'intention de se connecter.
le test n'est pas effectué en continu, juste une fois à chaque début de boucle.
Pour t'en convaincre :
a=1; while ((a++)) ; do echo $a ; sleep 1 ; done
Du coup, j'ai rajouté une condition à l'exécution des commandes finales, en effet, sans celle-ci, les commandes s'exécutaient au bout de 10 min même si on n'avait pas de connexion active.
oui, je n'avais pas relevé car je pensais que tu voulais lancer tes commandes quand même
pour finir je te propose une solution :
#!/usr/bin/env bash
commandes() {
echo 'à la place de ce echo, plein de commandes'
}
for ((a=1 ; a<10 ; a++))
do
echo -n "ping $a : "
ping -c1 google.fr >/dev/null && { echo OK; commandes; break; } || echo NOK
sleep 1
done
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#11 Le 19/12/2009, à 17:11
- nesthib
Re : [Résolu] [Script] Démarrer un script quand connexion active
Merci Nesthib, je pense que ton script me suffira. Je l'ai testé mais il y a quand même un bug au démarrage de la session (puisque ce script démarre au démarrage de la session). Je n'arrive pas à savoir ce que c'est puisque ça revient à GDM sans rien dire. Comme si une commande bloquait...
quand tu lances ton script tu peux rediriger les sorties (standard+erreur) vers un fichier de log
ton_script.sh 2&>/chemin/vers/un/fichier.log
Peut être sais-tu comment l'épurer pour que ça fonctionne sans problème ?
EDIT : j'essaye de trouver par moi même. Je pense qu'on peut épurer un peu le tout en précisant les interfaces réseaux, histoire que la recherche soit un peu moins longue et demande moins de commandes.
je n'ai pas bien compris ce que tu veux dire.
ps. comment lances-tu ton script au démarrage?
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#12 Le 19/12/2009, à 17:26
- shakipu
Re : [Résolu] [Script] Démarrer un script quand connexion active
Non en fait je cherche juste à alléger un peu le script, à utiliser d'autres commandes plus simples.
Je lance mon script comme n'importe quel script : /chemin/du/script.sh
EDIT : Je ne comprend rien au log :
CachingBackend: Chargement des instances depuis le cache
CachingBackend: Chargement de <Launcher1>
CachingBackend: Chargement de <Launcher2>
CachingBackend: Chargement des instances depuis le cache
CachingBackend: Chargement de <Output1>
CachingBackend: Chargement des instances depuis le cache
CachingBackend: Chargement de <NowPlaying1>
daemon already started
waiting 12/19/09 17:27:46
Trouvé une session en cours de NowPlaying, ajout d'une nouvelle instance par service.
Erreur dans screenlets.services.get_service_by_name: org.freedesktop.DBus.Error.ServiceUnknown: The name org.screenlets.NowPlaying was not provided by any .service files
Trouvé une session en cours de Launcher, ajout d'une nouvelle instance par service.
Erreur dans screenlets.services.get_service_by_name: org.freedesktop.DBus.Error.ServiceUnknown: The name org.screenlets.Launcher was not provided by any .service files
Trouvé une session en cours de Output, ajout d'une nouvelle instance par service.
Erreur dans screenlets.services.get_service_by_name: org.freedesktop.DBus.Error.ServiceUnknown: The name org.screenlets.Output was not provided by any .service files
Screenlet has already been added to /tmp/screenlets/screenlets.rodolphe.running
Chargement des instances dans: /home/rodolphe/.config/Screenlets/NowPlaying/default/
Fichier: NowPlaying1.ini
Screenlet has already been added to /tmp/screenlets/screenlets.rodolphe.running
Chargement des instances dans: /home/rodolphe/.config/Screenlets/Launcher/default/
Fichier: Launcher1.ini
Screenlet has already been added to /tmp/screenlets/screenlets.rodolphe.running
Chargement des instances dans: /home/rodolphe/.config/Screenlets/Output/default/
Fichier: Output1.ini
/home/rodolphe/.config/Screenlets/NowPlaying/default/NowPlaying1
/usr/lib/pymodules/python2.6/screenlets/drawing.py:114: DeprecationWarning: use copy pango.FontDescription.set_family instead
self.p_fdesc.set_family_static(font)
/home/rodolphe/.config/Screenlets/Launcher/default/Launcher1
CHARGER UN NOUVEAU THEME: default
TROUVE: /usr/share/screenlets/NowPlaying/themes/default
Set options in LauncherScreenlet
/usr/share/screenlets/Launcher/LauncherScreenlet.py:132: DeprecationWarning: Use the new widget gtk.Tooltip
tt = gtk.Tooltips()
/usr/share/screenlets/Launcher/LauncherScreenlet.py:133: DeprecationWarning: Use the new widget gtk.Tooltip
tt.set_tip(self.window, value)
/home/rodolphe/.config/Screenlets/Output/default/Output1
CHARGER UN NOUVEAU THEME: default
TROUVE: /usr/share/screenlets/Output/themes/default
theme.conf trouvé ! Chargement des options d'écrasements
theme.conf a été chargé:
Nom: default
Auteur: Helder Fraga aka Whise
Version: 1.0
Info: default theme
Ignorer frame_color
ATTENTION: Option 'frame_color' non trouvé ou protégé
Ignorer shadow_color
ATTENTION: Option 'shadow_color' non trouvé ou protégé
Ignorer iner_frame_color
ATTENTION: Option 'iner_frame_color' non trouvé ou protégé
Ignorer text_color
ATTENTION: Option 'text_color' non trouvé ou protégé
Screenlet has been initialized.
Fichier: Launcher2.ini
/home/rodolphe/.config/Screenlets/Launcher/default/Launcher2
Set options in NowPlayingScreenlet
CHARGER UN NOUVEAU THEME: Coversutra-Searchbar-Vinyl-Art
TROUVE: /usr/share/screenlets/NowPlaying/themes/Coversutra-Searchbar-Vinyl-Art
Set options in LauncherScreenlet
Screenlet has been initialized.
Restored instances from session 'default' ...
Set options in OutputScreenlet
CHARGER UN NOUVEAU THEME: default
TROUVE: /usr/share/screenlets/Output/themes/default
theme.conf trouvé ! Chargement des options d'écrasements
theme.conf a été chargé:
Nom: default
Auteur: Helder Fraga aka Whise
Version: 1.0
Info: default theme
Ignorer frame_color
Ignorer shadow_color
Ignorer iner_frame_color
Ignorer text_color
rhythmbox
Screenlet has been initialized.
Restored instances from session 'default' ...
Restored instances from session 'default' ...
waiting 12/19/09 17:27:52
waiting 12/19/09 17:27:57
First workarround didnt work let run a second manual workarround
First workarround didnt work let run a second manual workarround
OutputScreenlet.py: Fatal IO error 11 (Ressource temporairement non disponible) on X server :0.0.
LauncherScreenlet.py: Fatal IO error 11 (Ressource temporairement non disponible) on X server :0.0.
NowPlayingScreenlet.py: Fatal IO error 11 (Ressource temporairement non disponible) on X server :0.0.
rm: ne peut enlever `/tmp/index.html': Aucun fichier ou dossier de ce type
First workarround didnt work let run a second manual workarround
CachingBackend: Chargement des instances depuis le cache
CachingBackend: Chargement de <RadioFM1>
No Daemon, Launching Daemon
Traceback (most recent call last):
File "/home/rodolphe/.screenlets/RadioFM/RadioFMScreenlet.py", line 324, in <module>
screenlets.session.create_session(RadioFMScreenlet)
File "/usr/lib/pymodules/python2.6/screenlets/session.py", line 471, in create_session
session = ScreenletSession(classobj, backend_type=backend)
File "/usr/lib/pymodules/python2.6/screenlets/session.py", line 105, in __init__
self.connect_daemon()
File "/usr/lib/pymodules/python2.6/screenlets/session.py", line 110, in connect_daemon
bus = dbus.SessionBus()
File "/usr/lib/pymodules/python2.6/dbus/_dbus.py", line 219, in __new__
mainloop=mainloop)
File "/usr/lib/pymodules/python2.6/dbus/_dbus.py", line 108, in __new__
bus = BusConnection.__new__(subclass, bus_type, mainloop=mainloop)
File "/usr/lib/pymodules/python2.6/dbus/bus.py", line 125, in __new__
bus = cls._new_for_bus(address_or_type, mainloop=mainloop)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoServer: Failed to connect to socket /tmp/dbus-HkElNohWQ6: Connexion refusée
First workarround didnt work let run a second manual workarround
CachingBackend: Chargement des instances depuis le cache
CachingBackend: Chargement de <Youtube1>
No Daemon, Launching Daemon
Traceback (most recent call last):
File "/usr/share/screenlets/Youtube/YoutubeScreenlet.py", line 324, in <module>
screenlets.session.create_session(YoutubeScreenlet)
File "/usr/lib/pymodules/python2.6/screenlets/session.py", line 471, in create_session
session = ScreenletSession(classobj, backend_type=backend)
File "/usr/lib/pymodules/python2.6/screenlets/session.py", line 105, in __init__
self.connect_daemon()
File "/usr/lib/pymodules/python2.6/screenlets/session.py", line 110, in connect_daemon
bus = dbus.SessionBus()
File "/usr/lib/pymodules/python2.6/dbus/_dbus.py", line 219, in __new__
mainloop=mainloop)
File "/usr/lib/pymodules/python2.6/dbus/_dbus.py", line 108, in __new__
bus = BusConnection.__new__(subclass, bus_type, mainloop=mainloop)
File "/usr/lib/pymodules/python2.6/dbus/bus.py", line 125, in __new__
bus = cls._new_for_bus(address_or_type, mainloop=mainloop)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoServer: Failed to connect to socket /tmp/dbus-HkElNohWQ6: Connexion refusée
No protocol specified
No protocol specified
/usr/lib/pymodules/python2.6/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
warnings.warn(str(e), _gtk.Warning)
/usr/lib/pymodules/python2.6/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
warnings.warn(str(e), _gtk.Warning)
daemon already started
daemon already started
Dernière modification par shakipu (Le 19/12/2009, à 17:45)
Nous sommes tous des pécheurs face à l'Ethernet...
Hors ligne
#13 Le 19/12/2009, à 17:47
- nesthib
Re : [Résolu] [Script] Démarrer un script quand connexion active
Non en fait je cherche juste à alléger un peu le script, à utiliser d'autres commandes plus simples.
dans les commandes qui t'ont été proposées sur ce fil, il n'y a rien de compliqué.
peux-tu poster le contenu de ce que tu as fait pour l'instant?
Je lance mon script comme n'importe quel script : /chemin/du/script.sh
donc manuellement? si tu veux le faire lancer au démarrage automatiquement tu peux :
- soit ajouter un lanceur dans système > préférences > applications au démarrage
- soit éditer le fichier /etc/rc.local pour ajouter le chemin vers tes scripts
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#14 Le 20/12/2009, à 15:40
- shakipu
Re : [Résolu] [Script] Démarrer un script quand connexion active
Non je le lance pas manuellement. En fait, comme j'utilise Compiz en standalone, j'ai fait un script pour démarrer ma session. C'est juste un simple script qui lance les applications une par une.
Nous sommes tous des pécheurs face à l'Ethernet...
Hors ligne
#15 Le 25/12/2009, à 20:58
- shakipu
Re : [Résolu] [Script] Démarrer un script quand connexion active
Après quelques manips, je me suis rendu compte que c'était UN screenlet qui faisait tout merder : un screenlet permettant d'avoir la radio FM (google widget).
Du coup, le script marche très bien maintenant, merci à toi !
J'ai juste un dernier problème mais c'est pas l'endroit pour : mon screenlet "NowPlaying" est un gros rectangle gris quand il est démarré au démarrage... Pas trouvé pourquoi pour l'instant.
Encore une fois merci et Joyeux Noël ! Puissiez vous ne pas recevoir Windows 7 sous votre sapin...
Nous sommes tous des pécheurs face à l'Ethernet...
Hors ligne
#16 Le 25/12/2009, à 21:07
- wido
Re : [Résolu] [Script] Démarrer un script quand connexion active
Encore une fois merci et Joyeux Noël ! Puissiez vous ne pas recevoir Windows 7 sous votre sapin...
Merci et joyeux Noel à vous, C'est un cadeau qui revient cher , à la limite je préfère recevoir un DVD de jeux libres (nexuiz,openarena,glest,...)
Hors ligne
#17 Le 06/01/2010, à 11:26
- shakipu
Re : [Résolu] [Script] Démarrer un script quand connexion active
Rappel pour ceux qui tomberaient sur ce post par hasard, la solution se trouve ici : http://forum.ubuntu-fr.org/viewtopic.ph … 0#p3078800.
Nous sommes tous des pécheurs face à l'Ethernet...
Hors ligne
#18 Le 06/01/2010, à 13:28
- nesthib
Re : [Résolu] [Script] Démarrer un script quand connexion active
au fait un p'tit résolu ?
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne