Questions Fr > Demandes d'aide

[script] comment créer une condition par rapport à la connexion internet ?

(1/2) > >>

melodie:
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):

--- Code: ---[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

--- Fin du code ---

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

Severian:
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

--- Code: ---#!/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
--- Fin du code ---

avec une boucle

--- Code: ---#!/bin/bash

for (( ; ; )); do
  ping -q -c 1 <site> >/dev/null 2>&1
  if [ $? -eq 0 ]; then
    <actions que vous voulez>
    break
  fi
done
--- Fin du code ---

melodie:
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):

--- Code: ---[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

--- Fin du code ---

le fichier system-update.sh:

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

--- Fin du code ---

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

Et un fichier pot:

--- Code: ---# 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 ""

--- Fin du code ---

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.

Severian:
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

--- Fin de citation ---

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)

melodie:
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.

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique