Bash + dialog ! casse tete xD

Fermé
Lexouille - 29 mai 2008 à 20:48
 Lexouille - 29 mai 2008 à 23:11
Salut a tous !
voila je vous présente mon problème. J'ai un script en bash que j'aimerai un peu améliorer "graphiquement" ...
Mon script lit un fichier qui contient des noms de serveurs , et est sous cette forme :
serveur1
serevur2
serveur3
...

le nombre de lignes dans ce fichier peut etre variable !
le script affiche un message et les serveurs sur lesquels on peut se connecter avec un boucle :
i=0
for ligne in `cat serveurs`
do
tablo[$i]=$ligne
i=$(($i + 1))
echo "$1- $ligne"
done

le script demande ensuite sur quelle serveur on veut se connecter..
bon apres il fait d'autre truc mais je vous épargne le reste , c'est pas utile pour le probleme qui suit ...

je veux améliorer ça en utilisant dialog !
je veux que dans mon --inputbox ca donne la meme chose que en bash :
l'affichage des serveurs :
1-serveur1
2-serveur2
...
Choissiez un serveur sur lequel vous connectez :

et j'arrive pas du tout a intégrer cette boucle dans un inputbox pour afficher ce qu'il y a dans mon fichier serveur... j'ai essayer plusieurs choses rien ne marche ... (l'affichage barbare du tableau : ${tablo[*]} y a que ca qui fonctionne mais c'est pas propre du tout ... )
je me demande si enfait on peut faire quelque chose de dynamique comme ça ?!

Merci pour vous réponses ... si il y en a xD parce que j'ai pas trouver grand chose avec mon ami google !!
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
29 mai 2008 à 22:46
Salut,

En partant sur un fichier "serveurs" contenant :
serveur1
serveur2
serveur3
serveur4
serveur5
Voilà un exemple avec "dialog" :
#! /bin/bash

i=1
for ligne in $(cat serveurs)
do
        tablo[$i]="$i $ligne"
        i=$((i + 1))
done

dialog  --title "Menu" \
        --menu "Faites votre choix" 0 0 0 \
        ${tablo[*]} 2> menu.tmp.$$

retval=$?
choix=$(cat menu.tmp.$$)

rm -f menu.tmp.$$

case $retval in
0)
        echo "Choix : $choix";;
1)
        echo "Touche Cancel pressée.";;
255)
        echo "Boîte fermée.";;
esac
Le résultat en image dans une console ;-))
0
SAlut ! Merci pour ta réponse rapide !!!
excellent screenshot !
alors par contre euh moi chui sous openbsd , et euh ton script fonctionne , enfin il retourne pas d erreurs xD
mais niveau affichage ca me sort un truc tout laid ! donc je voulais savoir quelle version de dialog tu avais !

et sous quel distribution tu tournes , que je teste sur la meme !

Merci (:

et je voulais savoir , a ton avis , si par exemple je fais le choix 1 , qui correspond donc a serveur1 , comment je pourrais faire pour récup dans une variable "serveur1" .. la comme ca j imagine travailler avec ta variable $choix et par exemple récupérer le contenu de la ligne $choix dans mon fichier serveur, mais crois tu que ca soit possible autrement ?
t as l'air de toucher c cool !
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
29 mai 2008 à 23:07
Tu peux essayer avec Xdialog, c'est plus joli ;-))

Côté version :
[rep]$ dialog --version
Version: 1.1-20070704
[rep]$ Xdialog --version
2.2.1
[rep]$ cat /etc/release
Mandriva Linux release 2008.0 (Official) for i586
[rep]$
Quant à extraire le contenu de la ligne faisant référence au numéro de la variable "$choix" :
[rep]$ choix=4
[rep]$ sed -n "/$choix/p" serveurs
serveur4
[rep]$
;-))
0
OK ... c'est ptet un probleme de version ^^
openbsd oblige , pas d'interface graphique donc pas de xdialog !

et ouais jpense à la meme chose !

Bon bah jlaisse le message ouvert encore un peu ! voir si le probleme d'affichage graphique se resoud en changeant de version !
merci jipicy!
0