Telnet über mehrere Computer

  • Nabend

    Ich möchte gerne eine Telnet-Verbindung aufbauen. Ich habe einen Ausgangs-PC, von dem das Script ausgeführt wird und einen Weiterleitungs-PC, der eine Telnet-Verbindung mit dem letztendlichen PC herstellt.

    Wir nennen sie mal PC1/PC2/PC3
    PC1 führt das Skript aus und verbindet sich per Telnet mit PC2
    PC2 wird über Telnet von PC1 angewiesen eine Telnet-Verbindung mit PC3 aufzubauen und über diese Verbindung dann ein dort vorhandenes Script zu starten.

    Ich kann nicht von PC1 auf PC3 direkt zugreifen, weil sie nicht in dem selben Netzwerk sind.

    Netzwerk 1 : PC1 und PC2
    Netzwerk 2 : PC2 und PC3

    PC2 hat 2 Netzwerkkarten und ist somit in 2 Netzwerken.

    Ich habe angefangen die Telnet-Einwahl zu automatisieren
    Sieht so aus:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $ip = "192.168.168.155"
    Global $username = "Test"
    Global $password = "5750"
    Global $telnet, $process, $progress

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $telnet = "Telnet " & $ip
    Run(@COMSPEC & " /k" & "telnet " & $ip & " -l " & $username & " -f log.txt")
    WinWaitActive($telnet,"")
    $process = WinGetProcess($telnet,"")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _Execute("y")
    _Execute($password)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While ProcessExists($process)

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Execute($command)
    ControlSend($telnet,"","",$command)
    Sleep(400)
    ControlSend($telnet,"","","{ENTER}")
    Sleep(400)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]

    Nun weiß ich nicht wie ich mit der funktionierenden Telnet-Verbindung zwischen PC1/PC2 auf PC3 connecten kann.
    Also ist es eigentlich eine reine Telnet-Frage. Außerdem würde ich trotzdem gerne wissen wie man die Automatisierung von Telnet eleganter als mit ControlSend lösen könnte.

    Vielen Dank

  • Wine... :thumbup: Aber du musst auf dem PC2 ja auch gar kein Script ausführen?! Da Telnet meines Wissens nach auf TCP basiert, kannst du von PC1 aus, auch direkt die entsprechenden Pakete an PC2 senden ohne dass du zuerst den Umweg über den Commandline-befehl "telnet" gehst... ;)

    LG
    Christoph :)

  • Ist wahrscheinlich möglich. Ich bräuchte nur eine kleine oder etwas größere Starthilfe. :D

    Spoiler anzeigen
    [autoit]


    TCPStartup()
    $socket = TCPConnect("192.168.168.155",23)

    [/autoit]

    Und weiter? Wie kriege ich eine Verbindung, ich muss ja Username und Password noch übermitteln?

    Wäre echt nett, wenn mir jemand ein kleines Beispielscript schreiben könnte.

  • An deiner Stelle würde ich jetzt einfach hingehen und alle Telnet-Pakete die bei der Aktion verschickt werden mit Wireshark mitschneiden. Diese kannst du dann einfach in deinem Script einbauen... siehe TCPSend() ;)

    LG
    Christoph :)

  • Ich habs mir gerade mal angeschaut. Also ich habe jetzt einmal "Gecaptured" und naja dann nach der Ip von PC2 gefiltert. Ich weiß jetzt nur nicht wie ich die Daten richtig auswerte also dann als TCPSend Befehl wiedergebe.
    Wenn ich einen Eintrag auswähle bietet er mir unter "Copy" ja mehrere Möglichkeiten zum Export der Daten an. Welche kann ich dann einfach bei TCPSend einsetzen?


    Ich hoffe trotzdem das irgendwer noch eine bessere Lösung hat^^

    Edit: Ich dachte erstmal an die Binaries aber irgendwie spuckt er mir die unter Copy-->Bytes --> Binary Stream nicht aus?!

    Einmal editiert, zuletzt von N0THING (23. Oktober 2012 um 18:26)

  • Also die Binarys zu kopieren ist definitiv der falsche Weg. Aber ich habe gerade eine möglicherweise einfacheren Weg herausgefunden. Versuch mal auf PC2 den folgenden command aus:

    Code
    nc -l PC2 23 | nc PC3 23


    PC2 bzw. PC3 sind natürlich die IP der jeweiligen PCs. Wenn du jetzt per telnet auf PC2 connectest, solltest du eigentlich auf PC3 landen (Vorausgesetzt telnet ist auf PC2 ausgeschalten und telnet sendet kein EOF).

    Und um telnet effizient zu automatisieren müsstest du dich etwas mit dem Telnet-Protokoll und dann das entsprechende per TCP senden. Sollte eigentlich nicht so kopmlex sein. Google hilft dir sicher dabei ;)

    Gruss Shadowigor