Bash + dialog ! casse tete xD

Lexouille -  
 Lexouille -
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 !!
Configuration: Windows Vista
Firefox 2.0.0.14

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    1. Lexouille
       
      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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    1. Lexouille
       
      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