Frage

import telnetlib

def telNetCall():
    host  = "10.200.1.23"
    user  = "me"
    password = "matrix"
    telnet  = telnetlib.Telnet(host) 
    telnet.read_until('Username: ', 3) 
    telnet.write(user + '\r')
    telnet.read_until('Password: ', 3)  
    telnet.write(password + '\r') 
    telnet.write("sh log"+ "\r\n")
    telnet.write('exit' + '\r')
    print telnet.read_all() 

Mein Problem ist, dass, wenn ich zu greifen „Show log“ von Cisco-Router versuchen, es gibt mir nur Teilergebnis, ich, was es ist, weil Sie Hit Leertaste 5-mal müssen (davon abhängt, wie lange ist die Log-Geschichte) zu erhalten vollständige Log-wenn ich es tun manualy, und ich weiß nicht, wie python sagen Protokoll vollständig aufzulisten. Jeder Vorschlag?

War es hilfreich?

Lösung

Nicht eine Lösung, scheint aber eine plausible Lösung:

Sie können Terminal Paging deaktivieren, indem Sie den folgenden IOS-CLI-Befehl ausgegeben wird.

Anschlusslänge 0

Andere Tipps

Es ist eigentlich die genaue Antwort ..... Sie haben Anschlusslänge 0 oder die Router-Seiten wie die Ausgabe eingeben Unix mit „mehr“, so dass es für Menschen lesbarer und nicht nur blättern durch zu schnell

import telnetlib

def telNetCall():
    host  = "10.200.1.23"
    user  = "me"
    password = "matrix"
    telnet  = telnetlib.Telnet(host) 
    telnet.read_until('Username: ', 3) 
    telnet.write(user + '\r')
    telnet.read_until('Password: ', 3)  
    telnet.write(password + '\r') 

    telnet.write("term length 0"+ "\r\n")

    telnet.write("sh log"+ "\r\n")
    telnet.write('exit' + '\r')
    print telnet.read_all() 

Das Problem wird dann, wie man Captures größer als etwa 20 kb ... bei der Anmeldung ich alle die Ausgabe erhalten Datei, aber ich möchte nur eine selektive Ausgabe speichern, nicht die gesamte Sitzung. Wenn child.after mit der Ausgabe abgeschnitten wird, zum Beispiel der Anfang fehlt die maxread durch die Erhöhung ein wenig gemildert werden können, aber es immer noch Bomben aus, wenn der Nähe von 30-40kb der Ausgabe zu bekommen.

Für diejenigen fragen, ich bin die Ausgabe von Cisco Grabbing Switches mit "sh int | i-Protokoll | Last". Dies liefert nur 3 Zeilen pro Schnittstelle, aber einige meiner Kunden Switch-Stacks haben 450 Ports

Nicht sicher, was die Dynamik ist hier aber für einige schaltet es nicht gelingen.

Eine Zeit lang habe ich versucht, das Problem zu umgehen, indem selektiv dreht Protokollierung Datei ein und aus. Dies erwies sich als unzuverlässig und von dem allgemeinen Protokollierung kann ich diese pexpect Streichhölzer Ausgabe Art und Weise sehen, bevor die Protokollierung es sieht. Ich landete die Protokollierung zu deaktivieren, während die Daten noch immer zu Datei geschrieben werden. die Ausgabe nach etwa 10 Zeilen der Ausgabe Kürzen.

So die ultimative Frage bleibt, wie kann man die Zuverlässigkeit des child.after erhöhen. Um große Ausgaben zu erfassen. Ich habe kein Problem mit dem Timeout Erhöhung auf Expect Aussagen, solange der Ausgang zuverlässig ist. Was ich sehe, jetzt ist kein Timeout mit unvollständiger Ausgabe.

child.sendline(action)
child.expect(prompt_keys)
action_output = str(child.after)    # Captures the output
# print action_output   # Uncomment for debugging grabbed output
output_file.write(action_output + "\n\n\n") # Write the output to file
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top