LinuxVillage

Questions Fr => Demandes d'aide => Discussion démarrée par: melodie le 05 août 2015 à 01:44:56

Titre: [script] comment créer une condition par rapport à la connexion internet ?
Posté par: melodie le 05 août 2015 à 01:44:56
Bonjour,

J'ai créé ce fichier desktop pour des PC  équipés de Bento, optimisés au maximum possible car manquant de ressources, appartenant à des utilisateurs peu avertis (et manquant de facultés d'apprentissage):
[Desktop Entry]
Type=Application
Version=1.0
Name=System update
Name[fr]=Mise à jour système
Description=Non Automatic System Update
Description[fr]=Mettre à jour le système
Exec=gksu "xterm -maximize -e 'apt-get update && sleep 3 && apt-get dist-upgrade -q -y'"
Categories=System;GTK;
Terminal=false
Encoding=UTF-8
Icon=terminal

Il est automatiquement démarré en même temps que la session. Mais parfois cela ne fonctionne pas, car la connexion n'est pas disponible.

Je voudrais remplacer le contenu de la ligne "Exec" par un script qui testera si la connexion est disponible avant de décider de lancer ou non la commande de mise à jour. À quoi devrait ressembler ce script ?

Merci par avance,
Mélodie

Titre: Re : [script] comment créer une condition par rapport à la connexion internet ?
Posté par: Severian le 24 novembre 2015 à 19:03:17
bonjour Melodie
je sais que j'arrive avec quelques mois de retard  ;)

trouvé sur Léa-linux
http://lea-linux.org/documentations/Trucs:Tester_sa_connexion_internet
#!/bin/bash

ping -q -c 2 <site> >/dev/null 2>&1
if [ $? -eq 0 ]; then
  echo "Vous êtes connecté."
else
  echo "Vous n'êtes pas connecté."
fi

avec une boucle
#!/bin/bash

for (( ; ; )); do
  ping -q -c 1 <site> >/dev/null 2>&1
  if [ $? -eq 0 ]; then
    <actions que vous voulez>
    break
  fi
done
Titre: Re : [script] comment créer une condition par rapport à la connexion internet ?
Posté par: melodie le 24 novembre 2015 à 19:39:59
Bonjour Severian !

En effet, mais je suis une vilaine, je n'avais pas donné la solution que l'on m'a fournie après une longue séance de torture très gentiment.  :D

alors, le fichier sytem-update.desktop (à mettre sous /usr/share/applications, ou sous $HOME/.local/share/applications):
[Desktop Entry]
Type=Application
Version=1.0
Name=System update
Name[fr]=Mise à jour système
Description=Light Automated System Update for low resource computers
Description[fr]=Mise à jour système allégée pour PC peu musclés
Exec=system-update.sh
Categories=System;
Terminal=false
Encoding=UTF-8
Icon=xterm-color_48x48

le fichier system-update.sh:
#!/bin/sh

ping -c 3 exemple.com
if [ $? -eq 0 ]; then
gksu "xterm -maximized -e 'gksu apt-get update && gksu apt-get dist-upgrade -y -q'"
else
zenity --error --text="Error: no internet connction available\nPlease retry later"
#gtkdialog --center --program=script
fi

lequel bien sûr requiert impérativement la présence de zenity.

Et un fichier pot:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-04-25 15:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: system-update.sh:17
msgid "Error: no internet connction available\nPlease retry later"
msgstr ""

Pour le traduire dans toutes les langues.

Je ne dis pas qu'un script est meilleur que l'autre. Celui-ci a été testé, et fonctionne maintenant sur un eeepc qui avait bien besoin de ça.

Titre: Re : [script] comment créer une condition par rapport à la connexion internet ?
Posté par: Severian le 24 novembre 2015 à 20:05:06
voila la solution que j'ai retenu :

l'utilisation de cron
Citer
0 10,18 * * * apt-get -qq update
5 10,18 * * * if [ `aptitude search ~U | sed '1!d' | wc -l` -eq 1 ]; then echo "Mail envoyé le $(date)\n********************\nMISES A JOURS DISPO\n********************\n`aptitude search ~U`" | mail -s "Mise à Jours dispo" user@nomduPC.hostnameduPC ; fi

en traduction :
à 10h00 et 18h00 update des sources des paquets (apt-get update)
à 10h05 et 18h05 vérification de la présence de mises à jours (aptitude search ~U)
en cas de présence de màj, mail envoyé via l'adresse système pour prévenir des màj

le reste est fait en manuel mais il me semble possible de l'automatiser (mais c'est maaaalll :p)
Titre: Re : [script] comment créer une condition par rapport à la connexion internet ?
Posté par: melodie le 24 novembre 2015 à 20:19:54
Salut,

Y'a pas besoin de cron pour automatiser. Il suffit de mettre le fichier desktop dans /etc/xdg/autostart, et le programme qui est dans la ligne Exec se lancera dés le démarrage de la session.

Comme ça, l'utilisateur peut démarrer son système n'importe quel jour et à n'importe quelle heure, s'il a une connexion internet, la mise à jour se fera. Et automatiser, ce n'est pas mal du tout, si l'utilisateur le veut comme ça "parce que sinon il ne saura pas, ou va oublier, ou se rappellera pas ou ne saura pas ce qu'il faut faire".

(Il y en a pas mal dans les personnes que je connais, et qui utilisent un pc, même parmi des personnes plutôt jeunes).

PS: aptitude n'est pas installé dans Bento Openbox. Je n'utilise pas aptitude, uniquement apt-get, et les GUI : Synaptic, plus rarement la logithèque.

Titre: Re : Re : [script] comment créer une condition par rapport à la connexion internet ?
Posté par: Severian le 24 novembre 2015 à 20:44:32
Salut,

Y'a pas besoin de cron pour automatiser. Il suffit de mettre le fichier desktop dans /etc/xdg/autostart, et le programme qui est dans la ligne Exec se lancera dés le démarrage de la session.

Comme ça, l'utilisateur peut démarrer son système n'importe quel jour et à n'importe quelle heure, s'il a une connexion internet, la mise à jour se fera. Et automatiser, ce n'est pas mal du tout, si l'utilisateur le veut comme ça "parce que sinon il ne saura pas, ou va oublier, ou se rappellera pas ou ne saura pas ce qu'il faut faire".

(Il y en a pas mal dans les personnes que je connais, et qui utilisent un pc, même parmi des personnes plutôt jeunes).

PS: aptitude n'est pas installé dans Bento Openbox. Je n'utilise pas aptitude, uniquement apt-get, et les GUI : Synaptic, plus rarement la logithèque.

en fait ce sont deux solutions (celle que tu as mise en place et la mienne) qui mène au même résultat, ce qui les différencie, c'est "l'utilisateur"

j'ai bien compris que tu as retenue la solution du script avec autostart pour que ce soit "généraliste" et je pense que c'est la meilleur solution pour Bento :)

quand au fait d'automatiser,
Titre: Re : [script] comment créer une condition par rapport à la connexion internet ?
Posté par: melodie le 24 novembre 2015 à 21:41:50
Le gestionnaire de mises à jour de Ubuntu fait déjà tout cela très bien (update-manager) mais là où il pose problème, c'est quand il est installé sur des machines peu fournies en puissance (ram/proc/fsb/carte graphique). À ce moment là, la ligne de commande serait indiquée, mais voilà, faire faire "sudo apt-get update" à de simples utilisateurs, c'est moins simple que de mettre en place un script pensé pour agir à leur place.

De toutes les façons, par défaut c'est update-manager qui est installé.