2012-03-23 3 views
2

J'ai le problème suivant: Je dois exécuter des commandes sur des serveurs distants à partir d'une application Web (lecture), mais depuis le serveur Web, je n'ai aucun accès SSH aux serveurs distants. La seule chose que j'ai, c'est que les serveurs distants ont accès au serveur web via http (s).Exécuter des commandes sur des serveurs distants à partir d'une application Web

Mon idée était de créer un démon python, qui interroge une URL qui renvoie les commandes demandées via JSON.

Est-ce une bonne idée? Y a-t-il un cadre qui pourrait aider ici les clients?

BR Rene

+0

Que devez-vous faire exactement sur le serveur distant? Exécuter des commandes shell arbitraires? Exécuter une commande shell spécifique? –

+0

Exécuter des commandes shell arbitraires. – reen

+0

On dirait une mauvaise idée. Si vous devez le faire, au moins n'autoriser qu'un ensemble restreint de commandes (à l'intérieur d'une prison chroot serait bien.) –

Répondre

3

Mon idée était de créer un démon python, qui interroge une URL qui renvoie les commandes demandées par JSON.

Il s'agit essentiellement d'un courtier de messages. Donc, au lieu d'en écrire un vous-même, utilisez l'un des courtiers de messages disponibles tels que rabbitmq qui ont des liaisons pour Java et quelle que soit la langue que vous allez utiliser sur le serveur cible. À partir de votre serveur Web, envoyez un message au courtier à partir de votre serveur Web. Cela déclencherait un travailleur sur le serveur cible pour "se réveiller" et effectuer une tâche. Vous pouvez ensuite également extraire le résultat à travers le courtier de messages, ou l'écrire dans un magasin commun (comme mettre à jour un magasin k/v ou écrire dans une base de données commune).

+0

C'était initialement aussi mon idée, mais je ne peux pas installer un nouveau serveur de courtier de messages. Je pense que la seule solution que j'ai est celle que j'ai mentionnée. – reen

+1

Il n'a pas besoin d'être sur une machine dédiée. –

0

Il semble que vous pouvez faire des appels à distance avec pyro, vous pouvez appeler objet python distant. Python Remote Objects est un système d'objets distribués écrit entièrement en Python et destiné uniquement à Python. C'est petit, simple et gratuit. Vérifiez ici: pyro

+0

Malheureusement, aucun port n'est ouvert aux serveurs distants. Je viens de jave http (s) connexions des serveurs distants au serveur web. – reen

Questions connexes