LinuxVillage
Questions Fr => Demandes d'aide => Discussion démarrée 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
-
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
-
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.
-
voila la solution que j'ai retenu :
l'utilisation de cron
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)
-
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.
-
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)
-
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é.