Forum Programmation.shell Conseil GUI

Posté par  . Licence CC By‑SA.
3
7
mar.
2017

Bonjour,

J'ai besoin de vos idées, lumières, conseils.

J'aimerais faire une interface pour du code bash afin de piloter des VM tournant sous Virtualbox.
Le code n'est pas très compliqué car il reprend des commandes fournies par Virtualbox et d'autres éléments de l'hôte en lui même.
Donc pour cette partie pas de soucis je gère.

Par contre là où je coince c'est pour la partie interface. Car je voudrais créer une interface afin de rendre la gestion de la chose plus facile et propre.
Autant sous Windows avec Powershell je sais créer une GUI pour mes scripts, autant sous Linux je n'ai jamais eu l'occasion de le faire.

Voici un schéma qui grosso modo reprend l'idée que j'ai en tête, bon j'espère arriver à un résultat plus sympa pour les yeux :D
Titre de l'image

Je suis ouvert à toutes suggestions.

Merci d'avance.

  • # quelques idées

    Posté par  (site web personnel) . Évalué à 4.

    • [^] # Re: quelques idées

      Posté par  . Évalué à 1.

      DIs moi si je me trompe mais j'ai l'impression que Zenity c'est plus pour afficher des fenêtres pendant le déroulement d'un script.
      Moi c'est plus une GUI qui va permettre de lancer des scripts, donc l'inverse :D

      • [^] # Re: quelques idées

        Posté par  . Évalué à 3.

        L’idée c’est que ton script appelle Zenity pour afficher une boîte de dialogue, l’utilisateur choisit ce qu’il veut, puis Zenity rend la main à ton script et tu peux agir en fonction. Puis tu réaffiches une nouvelle fenêtre, et ainsi de suite.

        • [^] # Re: quelques idées

          Posté par  . Évalué à 1.

          Oui donc c'est bien ce que j'avais cru comprendre.

          Par exemple avec Powershell (je parle de celui-ci même si c'est du mon de Windows car je le connais bien), je fais mon script avec à l'intérieur diverses fonctions que je viens appeler lorsque l'utilisateur utilise un bouton, une liste… dans l'interface.
          Mais jamais cette interface ne disparaît pour en laisser une autre et dérouler un script du haut vers le bas.

          Après peut-être que cela n'est pas possible avec un script bash. Mais je trouve dommage de devoir partir sur un autre langage car tout ce que je dois utiliser existe en commande bash.

          • [^] # Re: quelques idées

            Posté par  . Évalué à 2.

            Par exemple avec Powershell (je parle de celui-ci même si c'est du mon de Windows car je le connais bien), je fais mon script avec à l'intérieur diverses fonctions que je viens appeler lorsque l'utilisateur utilise un bouton, une liste… dans l'interface.
            Mais jamais cette interface ne disparaît pour en laisser une autre et dérouler un script du haut vers le bas.

            Tu ne pourras pas faire la même chose en bash (mais je suis prêt à être contredit.)

            Tu pourrais envisager du Tcl/Tk (ou un autre langage couplé avec Tk pour l'interface : Python avec TkInter, Perl avec Tk). Puis depuis ton script Perl/Python/autre tu appelles tes commandes VBox*.

  • # TUI?

    Posté par  . Évalué à 5.

    Alors, je vais répondre un peu à côté, mais moi j’envisagerais bien une TUI (Text User Interface) à base de Ncurses plutôt qu’une GUI.

    À partir de code bash, c’est relativement facile à construire avec dialog.

    S’il faut absolument une GUI, je ne suis pas sûr qu’un script shell soit le plus adapté, je pense que je partirais plutôt sur du Python ou assimilé. Mais tu peux quand même tenter des choses avec des programmes comme Zenity.

    • [^] # Re: TUI?

      Posté par  . Évalué à 0. Dernière modification le 07 mars 2017 à 12:57.

      Oui j'ai besoin d'une GUI car le but est de développer une interface pour piloter des VM et des fonctions associées. Je me serai bien contenter de l'interface de Virtualbox mais je ne peux pas y intégrer toutes les fonctions supplémentaires que je veux ajouter : gestion LVM, gestion de l'hôte (reboot, shutdown…), réseau, backup vers un serveur…

      • [^] # Re: TUI?

        Posté par  . Évalué à 3.

        tu as regardes l'interface php-vbox ?
        https://sourceforge.net/p/phpvirtualbox/wiki/Home/

        je ne sais pas si c'est encore maintenu, mais tu y trouveras peut-etre une base,
        et qui plus sera executable à distance, et dans laquelle tu pourrais rajouter tes fonctionnalités et ainsi contribuer aussi au libre.

        • [^] # Re: TUI?

          Posté par  . Évalué à 0.

          Oui je connais cette interface. Par contre je n'ai pas les compétences pour apporter ma pierre à l'édifice malheureusement… :(

          • [^] # Re: TUI?

            Posté par  . Évalué à 2.

            si tu es pret à decouvrir comment faire une interface en "bash"
            faire un ajout à une interface en PHP doit pas etre bien plus compliqué

            • [^] # Re: TUI?

              Posté par  . Évalué à 0.

              Faut que je commence par apprendre php et javascript. Ça fait beaucoup pour faire une simple GUI :D
              Et il n'est pas prévu de faire tourner un serveur web sur le poste.

              • [^] # Re: TUI?

                Posté par  . Évalué à 3.

                libvirt dispose d'un "driver" pour les machines virtualbox
                et fait peut-etre deja ce que tu veux.

                les outils virsh, virt-manager te permette alors de faire certaines des commandes que tu veux.

            • [^] # Re: TUI?

              Posté par  . Évalué à 0.

              J'ai réfléchi à ton idée et finalement je vais me lancer sur une interface web.

              Alors je ne vais pas partir sur la modification de phpvirtualbox car c'est trop complexe pour mon niveau newbie développeur. Mais j'ai regarder la syntaxe html et php pour faire ce à quoi j'ai pensé et ça n'a pas l'air bien compliqué.

              Donc je pense faire une page html avec derrière des scripts php qui vont appeler des scripts bash voir utiliser des librairies pour certains trucs si ça existe et si j'y arrive :D

              • [^] # Re: TUI?

                Posté par  . Évalué à 2.

                avec derrière des scripts php qui vont appeler des scripts bash

                php reste un langage de scripts, y a peut-etre pas besoin de faire des scripts qui appellent des scripts…

                • [^] # Re: TUI?

                  Posté par  . Évalué à 0.

                  Oui j'ai vu que je pouvais faire exécuter des commandes externes directement dans du code php avec shell_exec() par exemple.

                  • [^] # Re: TUI?

                    Posté par  . Évalué à 2.

                    attention quand meme au droit accordé à apache ou à celui qui va executer le php qui pourrait alors executer n'importe quoi et prendre le controle de ta machine

                    • [^] # Re: TUI?

                      Posté par  . Évalué à 0.

                      Ça serait uniquement en local.

  • # tcl/tk comme interface à tes scripts ?

    Posté par  . Évalué à 4. Dernière modification le 07 mars 2017 à 18:03.

    • [^] # Re: tcl/tk comme interface à tes scripts ?

      Posté par  . Évalué à 0.

      @Nicolas Casanova a proposé cette solution là aussi.

      J'ai jeté un œil ça m'a l'air fort intéressant.
      En plus c'est multiplateforme, pour que je veux faire là maintenant ça n'a pas d'intérêt mais ça me donne des idées pour d'autres choses que j'ai en tête.

      Merci ;)

  • # Python + pyvbox + GUI de ton choix (Tcl/Tk, Qt,...)

    Posté par  . Évalué à 3. Dernière modification le 09 mars 2017 à 15:33.

    Tu as des scripts pour manipuler les VM et tu veux une GUI.

    Soit tu fais de la GUI dans les scripts (Zenity,…), soit la GUI est générée par un autre langage (Python, PHP,…) et alors ce langage appelle tes scripts ou directement les commandes shell.

    Mais dans ce cas, mon conseil, plutôt que d'appeler des commandes shell depuis Python, est de chercher une bibliothèque qui fournit une API. C'est mieux pour l'intégration, la maintenance, la gestion des tests, des exceptions. En Python, par exemple, il y aurait ça (non testé) : https://pypi.python.org/pypi/pyvbox

    Pour la GUI, toujours en Python, que je connais mieux, je partirais sur Qt, mais c'est affaire de goût, et c'est pas évident, il y a pas mal de subtilités (ou de choses à lire dans la docs qu'on appelle subtilités quand on tombe dedans parce qu'on a cru qu'on s'en sortirai sans lire la doc).

    Je comprends bien que je suis en train de te proposer de refaire précisément la partie que tu as déjà…

    Bref, tout ça pour dire, comme NeoX, peut-être pas la peine de faire des scripts qui appellent des scripts. Éviter la glu qui colle mal.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.