Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création "radiolist" avec Dialog

Sujet résolu
    16 janvier 2018 à 10:20:59

    Bonjour à tous,

    J'écris actuellement un script bash qui va permettre sélectionner un réseau wifi et de s'y connecter avec Dialog via la console.

    Mais voilà je suis bloqué avec Dialog, je n'arrive pas à intégrer la liste des réseaux wifi scannés et de la mettre sous forme de "radiolist", qui permettra à l'utilisateur de se connecter au réseau wifi choisi.

    Avec cette commande :

    iw dev wlp3s0 scan | grep SSID | sed 's/^[ \t]*SSID: //' | sort -u

    Je liste les noms des réseau WIFI sous cette forme: (dans un fichier listwifi.txt)

    ---

    WiFi-2.4-065D

    WiFi-2.4-3E20

    WiFi-2.4-3E20_EXT

    WiFi-2.4-5400

    WiFi-5.0-065D

    WiFi-5.0-3E20

    WiFi-5.0-5400

    ---

    Mes soucis commencent ici, je ne sais pas comme créer un liste fonctionnelle sous Dialog (--radiolist)

    DIALOG=${DIALOG=dialog}
    $DIALOG --title "$TITLE" --clear \
            --radiolist "Sélectionnez votre réseau WIFI: \
            " 20 61 6 \
            "Var" "1" off\
             "Var" "2" off\
              "Var" "3" off\
               "Var" "4" off\
                "Var" "5" off\
                 "Var" "6" off 
    
    case $? in
      0)
       echo "Appuyé sur OK";;
      1)
       echo "Appuyé sur Annuler.";;
      255)
       echo "Appuyé sur Echap.";;
    esac

    Mon idée de départ était de stocker chaque ligne de mon fichier dans une variable unique, et de la réutiliser dans la fonction (--radiolist).

    Le hic, c'est que la liste du fichier listwifi.txt n'est jamais connue à l'avance et donc on ne peut donc pas mettre un nombre arbitraire de variables dans la fonction (--radiolist).

    Ce souci, je voulais le résoudre avec " wc -l " qui me donnera à chaque scan le nombre de wifi différents, ce nombre, je voulais m'en servire dans une boucle for (comme limite de boucle). Ce qui inscrirait un champ formaté de ce style :

    echo "$NOM_WIFI_1"
    echo "$NOM_WIFI_2"
    echo "$NOM_WIFI_3"
    echo "$NOM_WIFI_4"
    

    dans la fonction (--radiolist).

    Qui remplerait dans cet exemple, ces lignes :

    "Var" "1" off\
             "Var" "2" off\
              "Var" "3" off\
               "Var" "4" off\
                "Var" "5" off\
                 "Var" "6" off 

    Je précise que cette fonction sera fabriquée avant d'étre affichée à l'écran de l'utilisateur, elle se fabriquera pendant la fenêtre précédente lors par exemple de la barre de progression du scan des réseaux wifi.

    Donc mon but est d'exploiter un liste de réseau dans la fonction (--radiolist) cette méthode est un éventuelle solution que je m'étais mise en tête, j'imagine qu'il y a d'autres solutions plus faciles. J'ajoute aussi que je suis débutant :)

    Vos idées seront les bienvenues.

    Merci :magicien:



    • Partager sur Facebook
    • Partager sur Twitter
      16 janvier 2018 à 17:38:24

      la boucle for est ton amie pour résoudre ce problème.

      A chaque tour de boucle, lis un SSID, mets le en forme, et concatène le résultat avec celui des précédents tours de boucle

      exemple : 

      arg-rlist={"WiFi-2.4-065D","WiFi-2.4-3E20","WiFi-2.4-3E20_EXT","WiFi-2.4-5400","WiFi-5.0-065D","WiFi-5.0-3E20","WiFi-5.0-5400"}
      
      out_string=""
      for ssid in $arg_rlist
      do:
      
          out_string="$out_string $(echo $ssid OFF/)"
      done
      echo $out_string

      ce qui te donnera en sortie la variable $out_string contenant :

      "WiFi-2.4-065D OFF/ WiFi-2.4-3E20 OFF/ WiFi-2.4-3E20_EXT OFF/ WiFi-2.4-5400 OFF/ WiFi-5.0-065D OFF/ WiFi-5.0-3E20 OFF/ WiFi-5.0-5400 OFF/"
      

      Tu n'as plus qu'à l'insérer dans ton appel à dialog

      Bon courage pour ton petit projet sympathique



      • Partager sur Facebook
      • Partager sur Twitter
        29 janvier 2018 à 11:09:38

        Bonjour ezechiel203,

        Je suis désolé pour le retard.

        Mais je te remercie pour ta contribution car ta solution fonctionne bien pour moi. Cependant, je vais me tourner vers l'apprentissage de Python pour des raisons de flexibilité... :)

        • Partager sur Facebook
        • Partager sur Twitter
          29 janvier 2018 à 11:27:57

          coco1212 a écrit:

          Bonjour ezechiel203,

          ta solution fonctionne bien pour moi.

          telle quelle ? hmm...

          arg-rlist=WiFi-2.4-065D : commande introuvable
          erreur de syntaxe près du symbole inattendu « do: »


          ou alors, ce n'est pas de bash.

          • Partager sur Facebook
          • Partager sur Twitter

          Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

          Création "radiolist" avec Dialog

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown