Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/12/2008, à 10:17

thuban

Liste des mises à jour dans pipemenu d'openbox : help!

bonjour à tous!

Eh bien comme vousle voyez, je continue à customizer mon menu d'openbox, et à me battre avec des scripts et pipemenus! tongue

Ce coup-ci, j'aimerais afficher les paquets disponibles à être mis à jour , et en cliquant dessus, lancer update-manager.
Je voulais m'inspirer de ce script :

#!/bin/bash
# Conky script for displaying available updates
# in Debian. This script assumes you are in the
# sudo group and require no password for root
# access. Add something as such to your conkyrc:
#${color}APT: ${color D7D3C5}${execi 28800 ~/bin/debupdates.sh} 

sudo apt-get -qy update > /dev/null
NUMOFUPDATES=$(aptitude search "~U" | wc -l)
echo $NUMOFUPDATES Mises à jour disponibles

en le bidouillant j'arrive à ça :

#!/bin/bash


sudo apt-get -qy update > /dev/null
NUMOFUPDATES=$(aptitude search "~U" | wc -l )

cat << EOFMENU
<openbox_pipe_menu>
  <item label="$NUMOFUPDATES">
    <action name="Execute">
				<execute>
					gksu update-manager
				</execute>
			</action>
  </item>
</openbox_pipe_menu>
EOFMENU

Bon, j'ai plus ou moins le nombre de mises à jour.
Maintenant, ce que je voudrais, c'est la liste des paquets pouvants être upgradés... Il devient clair qu'il me faut lister le nombre de paquets upgradables , assigner à chaque paquet un numéro entre 1 et n,  et faire un affichage de 1 à n paquets, avec le nom du paquet en question.
Il me faudra en fait afficher n fois   <item label="paquet n° x"> .

Que pensez vous de mon raisonnement?

Bon, tout ça c'est bien beau, mais.... je ne sais pas faire..... sad

Pourriez vous me donner des pistes svp?

Hors ligne

#2 Le 20/05/2009, à 21:58

Mopinou

Re : Liste des mises à jour dans pipemenu d'openbox : help!

salut, ce post date un peu,
je vais mettre ce que j'ai en ce moment. Ca pourra peut etre en aider / inspirer d'autres.

Mon pipemenu affiche le nombre de nouvelles mise à jour puis si on clic dessus il lance une console pour installer ces mises à jour, mais mon menu ne permet pas de choisir les mises a jour à installer, il les installer toutes ou aucune.
Il y a plusieurs étapes necessaires, toutes trouvée dans le forum, je remercie tous les auteurs des différentes parties m'ayant servies pour ce pipemenu ^^

Dans un premier temps il faut inserer le pipemenu dans le menu.xml d'openbox, il faut rajouter cette ligne de code :

<menu id="MaJ" label="MaJ" execute="~/.script/openbox/recherche_upgrade.sh"/>

le script lancé est :

#! /bin/sh

sudo /usr/bin/apt-get update >/dev/null 2>&1
NB=$(sudo /usr/bin/apt-get --simulate upgrade | grep jour, | awk '{print $1}')

echo "<openbox_pipe_menu>\n";
  if [ "$NB" = "0" ]; then
    { echo "<separator label=\"Aucune mise à jour\" />";}
  elif [ "$NB" = "1" ]; then
    { echo "<item label=\"$NB mise à jour\"><action name=\"Execute\"><execute>gnome-terminal -x ~/.script/openbox/lancer_maj.sh</execute></action></item>";}
  else
    { echo "<item label=\"$NB mises à jour\"><action name=\"Execute\"><execute>gnome-terminal -x ~/.script/openbox/lancer_maj.sh</execute></action></item>";}
  fi
echo "</openbox_pipe_menu>";
exit 0

dans ce script on peut remarque 2 points importants
1) il faudrai rentrer des mots de passe pour les 2 opérations /usr/bin/apt-get update (mise a jour des dépots) et /usr/bin/apt-get -- simulate upgrade (simulation de mise à jour mais sans rien installer)
Pour ne pas être embêté avec ca, on faut autoriser l'utilisateur a ne pas avoir besoin de mot de passe pour ces 2 actions, qui sont sans danger vu que rien n'est fait à part la mise à jour des dépots.

Il faut donc modifier le fichier /etc/sudoers (Danger modifier ce fichier peut faire planter votre système)
pour ne pas faire de bétise, lancez :

sudo visudoers

cette commande permet d'éditer le fichier tout en vérifiant la synthaxe avant de l'enregistré
rajouter  à la fin de ce fichier les lignes suivantes:

mopy  ALL = (root) NOPASSWD: /usr/bin/apt-get --simulate upgrade
mopy  ALL = (root) NOPASSWD: /usr/bin/apt-get update

Ce code permet à l'utilisateur de ne pas avoir besoin de mot de passe pour les 2 actions /usr/bin/apt-get update et /usr/bin/apt-get --simulate upgrade. N'oubliez pas de changer "mopy" par votre pseudo.
voila, pour le mot de passe c'est réglé

2) en cliquant sur l'item du pipemenu il se lance un autre script si il y a des mise à jour possibles
Ce script est le suivant :

#!/bin/bash
echo "les paquets vont être mis à jour"
echo "si l'action n'est pas désirée : Ctrl+C)"
sudo -k
sudo apt-get upgrade
exit 0

Ce script permet lancer l'upgrade en effacant le mot de passe de sudo auparavant (par sécurité)

voila. bon ok j'ai pas pu le tester, mon systeme était déjà a jour, mais tous les scripts fonctionnent en console
Il peut y avoir des point à améliorer ou des synthaxes plus propres, je ne suis pas sous linux depuis très longtemps.

N'hésitez pas à laisser vos impression, merci

Dernière modification par Mopinou (Le 20/05/2009, à 22:01)

Hors ligne