2010-12-13 58 views
2

J'ai un script, appelé test.py, qui effectue les opérations suivantes:Afficher la sortie de script sur SSH?

while (1):

.... print "Bonjour tout le monde"

(ce script simplement des impressions 'bonjour monde' en continu).


Maintenant, j'utilise deux machines (machine A et machine B). Le même utilisateur est utilisé pour les deux machines. Je voudrais faire ce qui suit:

(1) [travailler avec la machine A] course test.pyprogramatically sur la machine A {sens, un script python locale sera en cours d'exécution test.py dire en utilisant os.system (....)} (à ce stade, le script test.py est l'impression "Bonjour tout le monde" à l'écran de la machine A)

(2) [travailler avec la machine B] Je veux maintenant me connecter à la machine A en utilisant ssh et 'view 'la sortie du script que nous avons couru (1)

Comment puis-je y parvenir? Je sais comment écrire le script qui sera en cours d'exécution et à partir test.py sur la machine A. Je sais aussi comment ssh de la machine B à la machine A.

Ce que je ne sais pas est:

(*) Quelle commande dois-je utiliser dans (1) pour exécuter le script python afin que sa sortie puisse être facilement visualisée lors de la connexion d'une machine différente (machine B) à la machine A? (*) Après le SSH de la machine B à la machine A, comment naviguer jusqu'à l'écran qui montre la sortie test.py?

Répondre

4

Il y a quelques façons dont vous pouvez le faire ... Mais peut-être la plus simple serait un tampon fifo:

A$ mkfifo /tmp/stuff 
A$ ./test.py &> /tmp/stuff 

ensuite sur la machine B:

B$ ssh A "cat /tmp/stuff" 
hello world 
hello world 
... 

Normalement, je suggère d'utiliser screen, mais il suppose que vous allez courir de l'intérieur d'un terminal (ce qui serait difficile). J'ai entendu que detach est censé être plus simple, alors peut-être que vous pourriez essayer cela?

+0

Merci David. Je sais que 'écran' est utilisé depuis le terminal. Est-il possible d'utiliser 'screen' depuis le script python? – user3262424

+0

Ça ... Ce serait probablement difficile. Parce que 'screen' fait toutes sortes de magie terminale pour écrire du texte au bon endroit et vous permettre de passer d'un écran à l'autre.Si un buffer fifo ou rediriger vers un fichier n'est pas assez bon, je regarderais en utilisant detach avant screen. –

+0

Merci pour votre réponse. – user3262424

1

Une alternative très rapide consiste à diriger la sortie de votre programme python vers un fichier, puis d'utiliser simplement tail avec le deuxième utilisateur pour voir la sortie telle qu'elle est écrite dans le fichier. Cependant, avec un programme comme vous avez là-bas, le fichier très rapidement rapidement devenir énorme.

+0

Merci pour votre réponse. – user3262424