Der folgende Code läuft grep in einer Maschine über SSH und druckt die Ergebnisse:Erstellen mehrerer SSH-Verbindungen zu einer Zeit mit paramiko
import sys, os, string
import paramiko
cmd = "grep -h 'king' /opt/data/horror_20100810*"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('10.10.3.10', username='xy', password='xy')
stdin, stdout, stderr = ssh.exec_command(cmd)
stdin.write('xy\n')
stdin.flush()
print stdout.readlines()
Wie kann ich grep fünf Maschinen auf einmal (so, dass ich nicht tun haben Sie große Verzögerung), dann setzen Sie all das in fünf Variablen und drucken sie alle aus.
Ich habe 1 Maschine, so dass ich nur 4. Ich habe vergessen zu erwähnen, dass alle Daten später im Skript verarbeitet werden und wie ich Ihren Code verstehen kann (ich bin PyN00b) es wird alle Daten von allen Maschinen auf einmal drucken, aber wie kann ich Daten gerade von einem Wirt dann verarbeiten? Und alle Hosts haben unterschiedliche Pass so kann ich sie alle in workon()? Ty für schnelle Wiederholung Alex. Mit freundlichen Grüßen – Whit3H0rse
@konjo, können Sie die Verarbeitung der Daten in dem Thread, der gerade die Daten erhalten hat - ich habe stattdessen 'print' es getan, nur weil das ist, was * Sie * in Ihrer Frage getan hat. Die Verarbeitung kann natürlich eine Überprüfung des Wertes von "Host" beinhalten, wenn Sie unterschiedliche Verarbeitungen für unterschiedliche Werte davon durchführen müssen. Oder Sie könnten mehrere Funktionen schreiben, die in Ihren Threads als 'target =' verwendet werden: Es gibt keine Einschränkung, dass alle Threads dieselbe Funktion ausführen müssen! –
Oke ich konnte alle 4 Maschinen grep, aber jetzt sind alle Daten zusammengeführt. Wie kann ich Daten von jedem einzelnen Host extrahieren, können Sie mir ein Beispiel geben, bitte erweitern Sie das obige Beispiel? Grüße – Whit3H0rse