web-dev-qa-db-fra.com

Comment créer une interface Web pour mon script Python?

J'ai un ordinateur dans mon bureau universitaire avec Ubuntu, ssh et Python. Je me connecte moi-même en utilisant ssh pour exécuter Python programmes et voir le résultat. Seule la sortie en ligne de commande, rien d'extraordinaire.

Cependant, j'ai ce collègue que je voudrais autoriser à faire de même. Malheureusement, il n’est pas très doué en informatique, je ne voudrais donc pas passer par tout le processus de familiarisation avec ssh. Je cherche un moyen simple et alternatif d'exécuter le programme et d'afficher la sortie (en ligne de commande).

Exécuter le programme dans ce contexte signifie être confiné à un dossier spécifique myFolder et faire python file1.py dans ce dossier.

Ubuntu est-il fourni avec Apache ou un autre serveur Web installé? Y a-t-il un autre moyen de communication que je pourrais mettre en place pour lui? Il utilise Windows 7.

4
FooBar

Bien sûr, vous pouvez installer Apache et tenter votre chance à partir de là.

Pour moi, ce qui suit semble plus simple:

  • (facultatif) créez un compte utilisateur pour lui sur la machine de l'université. C'est pour le "séparer" de vos fichiers. Ce n'est pas strictement nécessaire mais peut être une bonne idée.
  • Installez PuTTY sur la machine Windows 7 de votre ami.
  • Créez une session PuTTY (comme décrit ici ) et affichez-la sous forme d’icône sur le bureau (ou à tout autre endroit approprié). Assurez-vous également de configurer le nom d'utilisateur et le mot de passe. (Une alternative élégante serait d'utiliser pageant pour l'authentification)

Ainsi, il suffira à votre ami de cliquer sur une icône pour afficher une fenêtre de console où il pourra directement utiliser le script: python file1.py

4
user23573

Vous pouvez configurer un serveur de bloc-notes Ipython.

Ici sont les instructions.

Les ordinateurs portables doivent être relativement faciles à utiliser (pour certaines applications, ils sont même meilleurs que l'interface du terminal). De plus, vous n'avez pas besoin d'installer un client SSH sur l'ordinateur de votre ami ni d'inventer votre propre protocole sécurisé.

4
Ajasja

Si vous codez déjà en Python, vous pouvez écrire une interface Web pour votre programme à l'aide du module http.server) dans Python 3, ou BaseHTTPServer in Python 2. Votre programme émettrait alors sa sortie directement sur HTTP vers le navigateur distant. Les détails de la procédure sont en dehors de la portée de ce site, mais selon votre programme, il pourrait être inférieur à 10 lignes de code.

Gardez à l'esprit que vous perdriez ainsi toute la capacité d'authentification et d'autorisation de SSH. En d'autres termes, cette méthode ne permet pas au serveur de s'assurer que c'est vous ou votre collègue qui accédez à la page. Si quelqu'un d'autre découvre la bonne URL, il peut exécuter votre programme plusieurs fois de suite, éventuellement; ils pourraient le planter; ils pourraient tenter de le pirater; etc. Mais si ces risques sont acceptables pour vous, il est probablement difficile de battre pure Python pour plus de simplicité.

Il est possible d'effectuer l'authentification et l'autorisation via HTTPS, bien sûr, mais ce n'est plus aussi simple.

2
David Z

Ubuntu a un paquet personnalisé et préconfiguré pour Ubuntu qui inclut Apache et mysql que vous pouvez installer avec Sudo apt-get install lamp-server^. Si vous installez cela, vous devrez coder un logiciel pour faire ce que vous voulez faire; comme un service Web où il entre un lien et voit ensuite la sortie python dans la fenêtre de son navigateur. Je considère que c'est exagéré. à moins que vous n'espériez en faire plus.

Mais ne serait-il pas plus facile de créer un script sur la machine Windows qui effectue le ssh, l’exécution sur votre serveur et de télécharger le résultat afin qu’il puisse le voir? Cela me semble banal (eh bien, je le fais tout le temps mais n’utilisez pas Windows pour le faire;)).

1
Rinzwind