Hab wieder mal ein kleines Probem.
Und zwar connecte ich via paramiko auf einen rechner und fuehre mit exec_command einen Ping-Befehl, was auch alles soweit ganz gut klappt, allerdings habe ich Schwierigkeiten, die Antwort zu interpretieren. Mit subprocess habe ich ein aehnliches script, bei dem ich nicht auf dieses Problem treffe.
Code: Alles auswählen
import time
import paramiko
def sshPing(destination, ip):
try:
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(destination, port=22, username="root", key_filename="/root/.ssh/id_rsa")
command = "ping -c 1 " + str(ip) # + " > /dev/null 2>&1"
response = 0
while response == 0:
(stdin, stdout, stderr) = client.exec_command(command)
if not stdout.read():
response = 1
print('ip is up')
else:
print('ip is not reachable yet')
time.sleep(5)
finally:
client.close()
sshPing('192.168.1.55', '192.168.2.27')
Hab schon einiges versucht, aber entweder immer True oder immer False.
Wenn ich stdout.read() ausgeben lasse, dann bekomm ich auch das zueruck was kommen soll, allerdings weiss ich nicht wie ich es interpretieren kann. Den output string nach "error" zu filtern waere noch das einzige, dass mir einfaellt.
Vll hatte ja von euch schonmal jmd so nen Fall...
Danke fuer eure Ideen und Hilfe schonmal
PS: Muss ueber paramiko bzw ssh pingen, da die Architektur meines Netzwerkes leider kein forwarding etc erlaubt.
Edit: sry, falsches Unterforum, gehoert wohl in Netzwerkprogrammierung....