2011-10-30 3 views
2

Je suis intéressé par l'écriture d'un terminal basé sur le Web qui peut exécuter et compléter automatiquement les commandes dans le terminal ubuntu.Ecriture d'un pseudo terminal en python pour un terminal ubuntu basé sur le web

J'ai bidouillé avec Anyterm http://www.anyterm.org qui utilise ROTE: "une simple bibliothèque C pour l'émulation de terminal VT102" sur le serveur backend et javascript/html pour le terminal ui. Le problème était que je ne pouvais pas l'ouvrir deux terminaux dans la même fenêtre.

Après avoir fait quelques recherches, j'ai décidé d'écrire un serveur terminal/pseudo-terminal (selon la valeur la bonne terminologie) en python qui peut:

  • exécuter des commandes dans le terminal ubuntu (comme ls, grep, etc. ...
  • compléter automatiquement les commandes (comme $ gedi (onglet pressé) $ gedit)
  • et avoir plusieurs instances de terminal ouvertes en même temps (quand ls est entré dans un, l'autre terminal ne reconnaîtra pas ls en tant que dernière commande depuis son autre session de terminal)

J'ai trouvé qu'avec pty python module je peux écrire un pseudo terminal cependant je suis nouveau sur python et je ne pourrais même pas obtenir l'exemple sur cette page pour fonctionner.

Je prévois que le script python servira un serveur http avec le terminal javascript/html que j'écrirais (c'était la principale raison pour laquelle je voulais choisir python pour ce projet). Ensuite, je veux laisser le web ui parler au terminal serveur "backend" et ramener les résultats à l'interface web.

Si vous pouviez me pointer dans la bonne direction, peut-être me dire quel module je devrais utiliser -si pas pty- et me donner quelques idées sur la façon d'écrire le serveur python pseudo terminal je l'apprécierais.

Je connais javascript/php et je suis familier avec les scripts bash - A ce stade, je pourrais opter pour un serveur backend basé sur C ou python, python est-il adapté à ce projet?

Remarque: Je prévois d'écrire une interface utilisateur qui utilise ajax post ou des méthodes pour extraire la sortie du terminal du serveur principal.

+0

Vous confondez [ « terminal » et « shell »] (http : //superuser.com/questions/144666/what-is-the-difference-between-shell-console-and-terminal). –

+0

@Ignacio Vazquez-Abrams vous êtes plus que bienvenu pour éditer et corriger la terminologie. – Logan

+0

Mais alors ce que vous voulez va se diluer. Je vous recommande de regarder le but et les responsabilités de chacun et de décider où votre projet doit être divisé. –

Répondre

4

Vous devez d'abord apprendre la terminologie de base. Le shell est le programme qui interprète vos lignes de commande d'entrée, telles que grep "foo" abc.txt. Un émulateur de terminal est un programme qui imite un terminal . Terminal est un périphérique avec écran et clavier qu'un utilisé dans les années 1970 pour accéder à un ordinateur central UNIX. Un pseudo-terminal , pty est le nœud de périphérique supportant les émulateurs de terminaux, par opposition aux "terminaux réels" (tty1) par exemple.

Maintenant, vous pouvez soit construire un shell, qui fonctionnerait dans le terminal au lieu de bash ou tiret; ou vous pouvez créer un émulateur de terminal utilisable sur Internet; vous pouvez exécuter n'importe quel shell existant. Les deux sont des tâches difficiles par eux-mêmes.

La documentation Python n'est pas très utile, je vous recommande de commencer par googler d'abord plus de ces concepts - et pas seulement des références python, mais aussi C, C++.Et enfin, si vous voulez lancer Emacs ou nano ou un autre programme avancé dans votre shell, vous voulez utiliser le module pty.

0

J'ai eu un ami qui a fait quelque chose de similaire mais il l'a fait sur Google chat, je ne sais pas à quel point ce sera mais jetez un oeil à xmpp (python modual) peut-être vous aider, ou même ici est un lien vers son code source: chatIO Je ne travaille pas avec lui, mais il lui était vraiment facile à utiliser Bonne chance

Questions connexes