Auteur Sujet: [script] comment créer une condition par rapport à la connexion internet ?  (Lu 6241 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne melodie

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1774
    • Citrotux
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

Good leaders being scarce, following yourself is allowed.

Severian

  • Invité
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

Hors ligne melodie

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1774
    • Citrotux
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.

Good leaders being scarce, following yourself is allowed.

Severian

  • Invité
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)

Hors ligne melodie

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1774
    • Citrotux
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.

« Modifié: 24 novembre 2015 à 20:23:18 par melodie »
Good leaders being scarce, following yourself is allowed.

Severian

  • Invité
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,
  • tu peux automatiser la recherche de màj et prévenir l'utilisateur que sont système peut être mis à jour (meilleur solution)
  • tu peux aussi automatiser la recherche de màj et en cas de présences de paquets à mettre à jour les pré-télécharger et prévenir l'utilisateur qu'il peux mettre à jour son système
  • et comble de l'automatisme, tu cherche les màj et les installe directement et tu préviens l'utilisateur que son système vient d'être mis à jour (c'est mal)

Hors ligne melodie

  • Administrateur
  • Membre Héroïque
  • *****
  • Messages: 1774
    • Citrotux
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é.

Good leaders being scarce, following yourself is allowed.