2016-05-24 14 views
1

Dies ist ein einfacher Code, der sich in einer Linux-Box anmeldet und einen Grep zu einer Ressource auf der Box ausführt. Ich muss nur in der Lage sein, die Ausgabe des Befehls anzuzeigen, den ich ausführe, aber nichts wird zurückgegeben. Code meldet keinen Fehler, aber die gewünschte Ausgabe wird nicht geschrieben.Keine Ausgabe von stdout.readlines()

Unten ist der Code:

import socket 
import re 
import paramiko 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect('linux_box', port=22, username='abc', password='xyz') 
stdin, stdout, stderr = ssh.exec_command('grep xyz *.set') 
output2 = stdout.readlines() 
type(output2) 

Dies ist die Ausgabe erhalte ich:

C: \ Python34 \ python.exe C: /Python34/Paramiko.py

Prozess beendet mit Exit-Code 0

Antwort

0

Sie drucken tatsächlich nichts auf die Standardausgabe.

Das Ändern der letzten Zeile auf print(output2) sollte den Wert korrekt drucken.

Ihr Code basierte wahrscheinlich auf interaktiven Python-Shell-Experimenten, bei denen der Rückgabewert des zuletzt ausgeführten Befehls implizit auf die Standardausgabe gedruckt wurde. Im nicht interaktiven Modus tritt solches Verhalten nicht auf. Deshalb müssen Sie die Funktion print explizit verwenden.

+0

Danke für die Antwort Rogalski. Ich habe die letzte Zeile im Code mit print (output2) ersetzt, aber diesmal bekomme ich eine leere Klammer: [] Prozess beendet mit Exit Code 0 Ich habe auf der Box verifiziert, dass ich ein Ergebnis für den Befehl I bekomme was ich renne. – Satnau

+0

Ich habe den gleichen Code auf einem Router mit Befehlen verwendet und es hat funktioniert. Bedeutung der Code ist korrekt, aber nicht sicher, das würde nicht auf der Linux-Box funktionieren. – Satnau