Forum Programmation.c Piloter un programme avec pty

Posté par  .
Étiquettes :
0
18
nov.
2011

Bonjour,

Je développe un programme de supervision, acquisition de données et enregistrement dans une base de données.

C'est donc un démon qui se lance au démarrage de Debian, et utilise rsyslog pour envoyer des messages/informations.

J'aimerai ajouter une interface de gestion interne à ce programme, qui créé des menus avec la bibliothèque ncurses.

Ce menu doit être accessible sur une console par SSH, ou en local par un port série.

Mais je ne sais pas trop quelle méthode utiliser.

J'ai pensé à 2 façons de le faire :

  • 1ère méthode :

Le démon créé un PTY,
On ouvre un shell sur Debian part le port série (getty) ou par SSH.
On se connecte ensuite au PTY.

  • 2ème méthode :

Le démon ouvre un socket,
quand un client se connecte, il créé l'interface sur le socket avec ncurses.

  • # Choisir une solution éprouvée

    Posté par  . Évalué à 1.

    Ça ressemble beaucoup à un exercice pour étudiant.

    Tu cherches les ennuis avec tes solutions. Regarde plutôt ce qui se fait habituellement:

    1. Ton démon crée un socket pour permettre les interactions.
    2. Tu écris un client ncurses qui se connecte à ce socket et dialogue avec le démon selon un protocole qui lui est propre (question/réponse).
    3. En prime, si le ncurses est cantonné au client, tu peux aussi écrire un client qui retourne du HTML et l'utiliser en CGI; ou écrire un client graphique; tu n'es lié ni au langage, ni aux librairies, ni au mode de sortie.
    • [^] # Re: Choisir une solution éprouvée

      Posté par  . Évalué à 0.

      Le problème c'est que créer un protocole ça va être un peu lourd.

      Concernant le WEB, il y'a la possibilité de créer un shell dans une page WEB il me semble (vu sur Webmin).

      • [^] # Re: Choisir une solution éprouvée

        Posté par  . Évalué à -1.

        Le mieux serait que le serveur créé un socket, et lorsqu'un client se connecte dessus, le serveur créé un terminal sur lequel il peut utiliser ncurses.

        Je sais pas si c'est possible.

  • # ncurses sur un socket

    Posté par  . Évalué à 0.

    J'ai trouvé quelqu'un qui cherche exactement à faire ce que je veux faire :

    http://linuxfr.org/users/niconico/journaux/dialogué-avec-un-deamon

    Mais pas de solutions simples apparament.

    Le problème étant qu'on ne peut pas utiliser ncurses directement sur un socket car il a besoin d'un terminal.

  • # à tout hasard..

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

    Je ne comprends pas bien ce que tu veux faire, car en fait je ne comprends pas pourquoi tu aurais besoin qu'un dameon gère des menus...?

    car le propre d'un daemon est justement d'être détaché des stdin, sdtout.. mais tu m'as l'air de connaitre la question.

    tu cherches à agir sur le comportement du démon via une config ?

    au cas où, un lien qui peut intéresser : http://www.unixgarden.com/index.php/programmation/utilisation-des-pseudo-terminaux-pour-piloter-les-programmes-interactifs

Suivre le flux des commentaires

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