Strato Telnet Verbingund herstellen

  • Hi @all
    Ich habe versucht mit Autoit und Tcp eine verbingung zu Strato Telnet aufzubauen leider wird keine Verbindung hergestellt zum Strato Telnet zugang
    (bin auch registriert)

    mein versuch

    [autoit]

    Func _StratoConnect($iIp,$iPort = 21)
    TCpStartup()
    TCPConnect($iIp,$iPort)
    EndFunc

    [/autoit]

    Edit : manuel :
    http://www.strato-faq.de/artikel.html?id=1147

    Einmal editiert, zuletzt von simon (20. September 2009 um 10:32)

    • Offizieller Beitrag

    Ob der Zugriff auf Telnet mit Autoit überhaut möglich ist, weiß ich nicht. Ich denke, das du den falschen Port benutzt, der Standard Port für Telnet ist 23 und nicht 21 (Ftp).

    Hier mal der Link zur Wiki http://de.wikipedia.org/wiki/Telnet.

  • das Problem ist auch , das ich nicht weis was ich bei tcpconnect als ip verwenden muss ich habe es mit meiner kundennummer versucht aber normalerweise hat ja eine ip auch punkte oder muss ich da miene adrese eingeben ?

  • Es hilft dir TCPNameToIP ;)
    Und hier ein einfacher Client:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    TCPStartup()
    GUICreate("Telnet Client", 500, 390, -1, -1, BitOr($WS_THICKFRAME, $WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU) )
    $EDIT = GUICtrlCreateEdit("", 10, 10, 480, 330, $GUI_SS_DEFAULT_EDIT + $ES_READONLY)
    GUICtrlSetFont(-1, 10, 0, -1, "Courier New")
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
    $INPUT = GUICtrlCreateInput("", 10, 360, 480, 20)
    GUICtrlSetResizing(-1, 582)
    $HOSTI = InputBox("Telnet Client", "Please enter the name of the host you want to connect to", "void.dune.net")
    $PORTI = InputBox("Telnet Client", "Please enter the port of the host", "3000")
    GUISetState()
    ControlSend("Telnet Client", "", $EDIT, "{TAB}")
    $HOST = TCPNameToIP($HOSTI)
    $CONECTION = TCPConnect($HOST, $PORTI)
    If @error Then Exit
    While 1
    $MSG = GUIGetMsg()
    If $MSG = $GUI_EVENT_CLOSE And (MsgBox(36, "AutoIt Telnet", "Sitzung wirklich beenden?") = 6) Then Exit
    $RECV = TCPRecv($CONECTION, 2048)
    If $RECV <> "" Then
    $RECV = StringReplace($RECV, @LF, @CRLF)
    $RECV = StringReplace($RECV, @CRLF & @CR, @CRLF)
    $TEXT = GUICtrlRead($EDIT)
    GUICtrlSetData($EDIT, $TEXT & $RECV)
    GUICtrlSendMsg($EDIT, 183, 0, 0)
    EndIf
    If $MSG = $INPUT Then
    $TEXT = GUICtrlRead($EDIT)
    $EINGABE = GUICtrlRead($INPUT)
    GUICtrlSetData($EDIT, $TEXT & $EINGABE & @CRLF)
    GUICtrlSetData($INPUT, "")
    TCPSend($CONECTION, $EINGABE & Chr(10))
    If @error Then
    MsgBox(0, "AutoIt Telnet", "Error - Wird beendet")
    Exit
    EndIf
    GUICtrlSendMsg($EDIT, 183, 0, 0)
    EndIf
    WEnd

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

    Func ONAUTOITEXIT()
    TCPCloseSocket($CONECTION)
    TCPShutdown()
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von progandy (20. September 2009 um 16:38)

  • also soll ich TCPnametoIp verwenden
    soll ich da meine inet adresse eingeben oder meine strato kundennummer ?

    • Offizieller Beitrag

    Werder noch. Da sollte die Webadresse von Strato rein.

  • Aha ok und wie kann ich mein passwort verwenden für den login wo muss ich das eingeben ? oder wie für den login senden?

    Edit :
    Mein bisheriges

    [autoit]

    Func _StratoConnect($sUrl,$sPort = 25)
    If StringinStr($sUrl,"http://") Then
    $sUrl = StringReplace($sUrl, "http://","")
    Endif
    TCpStartup()
    $sIp = TCPNameToIP($sUrl)
    $Strato_Connect = TCPConnect($sIp,$sPort)
    If @error Then
    Exit
    Endif
    If $Strato_Connect = -1 Then
    Exit
    Endif
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von simon (21. September 2009 um 14:25)

  • mit Strato telnet kann man die strato telnet befehl ausführen auch mit mysql arbeiten und ich will mit autoit und mysql datenspeichernt und auslesen
    jetzt ist die frage wie bekomme ich den login hin ich habe es auch schon mit

    [autoit]

    _StratoSend("Login: " & $sUrl)
    _StratoSend("Password: " & $sPasswort)

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

    Func _StratoSend($sCommand)
    TcpSend($Strato_Connect,$sCommand & @CRLF)
    EndFUnc

    [/autoit]

    versucht
    ging aber nicht

  • Lösungen ?

    Klar, wir sind alle bei Strato und können das jederzeit testen.... Nein, mal erlich:

    Wie wäre es wenn Du zu Testzwecken mal einen Account preisgibst, mit dem wir Dir helfen können.
    Normalerweise sollte der TCPConnect auf "www.simon-webstation.de" und Port 23 klappen.
    Aber wie gesagt ohne Testaccount schwierig... (Passwort kannst Du ja anschließend wieder ändern !)

    Und Dein bisheriges Script wäre auch nicht schlecht, damit wir wissen, wie Du die Funktionen im Script nutzt.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Stimmt da hast du recht aber ich will mein pwd nicht preisgeben da man wenn man es nur kurz hat schon was anstellen kann oder kostenpflichtige sachen machen kann

  • Hallo Simon,

    ich liege vielleicht daneben, aber ich hatte auch mal so einen Fall bei Strato und bin fast verzweifelt.
    Ergebnis: Telnet ist !nicht! zwingend in jedem Paket enthalten!!!

    In irgendeiner Help-File bei Strato stand dann, in welchen Paketen es überhaupt einen Telnet Zugang gibt.
    Hab leider den Link nicht dazu.

    Du wirst das schon finden ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Ja hab scon nachgeschaut und meines geht
    mit microsoft telnet geht es ja auch

    mein aktuelles:

    Spoiler anzeigen
    [autoit]


    ;Author: Simon Buchner
    Global $Strato_Connect
    Func _StratoConnect($sUrl,$sPasswort,$sPort = 23)
    If StringinStr($sUrl,"http://") Then
    $sUrl = StringReplace($sUrl,"http://","")
    Endif
    TCpStartup()
    $sIp = TCPNameToIP($sUrl)
    $Strato_Connect = TCPConnect($sIp,$sPort)
    _StratoSend("o " & $sUrl)
    $o = _StratoSend($sUrl)
    Sleep(2000)
    _StratoSend($sPasswort)
    If @error Then
    Exit
    Endif
    If $Strato_Connect = -1 Then
    Exit
    else
    If _StratoWait() Then
    Return 1
    Else
    Return 0
    EndIf
    Endif
    EndFunc

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

    Func _StratoWait()
    Local $sReturn = ''
    Local $recv
    Local $TimeOutTimer = TimerInit()
    $i = 0
    While TimerDiff($TimeOutTimer) < 5000
    $recv = TCPRecv($Strato_Connect, 4096)
    If @error Then
    ExitLoop
    Endif
    If $recv <> "" Then
    return $recv
    ExitLoop
    EndIf
    $i += 1
    If $i = 15 Then
    ExitLoop
    Endif
    WEnd

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

    Return ''

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

    EndFUnc

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

    Func _StratoSend($sCommand)
    TcpSend($Strato_Connect,$sCommand & @CRLF)
    EndFUnc

    [/autoit]
  • Hast du schon mal meinen Client ausprobiert?
    LogIn sollte meistens so funktionieren:

    Spoiler anzeigen
    [autoit]

    TCPStartup()
    $Server = TCPNameToIP("Name")
    $Port = 23
    $Username = "abc"
    $Password = "xyz"

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

    $conn = TCPConnect($Server,$Port)
    $recv = _TCPRecv($conn, 1000) ; Timeout musst du testen ;)
    MsgBox(0, '', $recv)

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

    _TCPSend($conn, $Username)
    $recv = _TCPRecv($conn, 1000) ; Timeout musst du testen ;)
    MsgBox(0, '', $recv)

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

    _TCPSend($conn, $Password)
    $recv = _TCPRecv($conn, 1000) ; Timeout musst du testen ;)
    MsgBox(0, '', $recv)

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

    TCPCloseSocket($conn)
    TCPShutdown()

    Func _TCPSend($conn, $Text)
    TCPSend($conn, $Text&@CRLF)
    EndFunc
    Func _TCPRecv($Socket, $iIdleTimeout=500)
    Local $recv = "", $chunk, $Init=-1
    While 1
    $temp = TCPRecv($Socket,1024)
    Select
    Case $temp="" And $Init=-1
    $Init = TimerInit()
    Case $temp="" And TimerDiff($Init)>$iIdleTimeout
    Return $recv
    Case Else
    $recv &= $temp
    $Init = -1
    EndSelect
    WEnd
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von progandy (22. September 2009 um 19:05)

  • @progandy das mit dem Client geht wohl nicht da man eine verbindung in diesem telnet auch noch öffnen muss
    mein login Stimmt aber die sendung der späteren befehle nicht
    da alls fehler immer

    der Port ist auch (wie ich herausgefunden habe) 21

    500 Syntax error and command unknown
    obwohl der command richtig ist

    jetzt habe ich bei tcpsend in der Funktion _StratoSend das @CRLF weggelassen jetzt kommt gar nichts mehr zurück

    Mein bisheriges

    Spoiler anzeigen
    [autoit]

    ;Author: Simon Buchner

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

    Func _StratoConnect($sUrl,$sPasswort,$sPort = 21)
    If StringinStr($sUrl,"http://") Then
    $sUrl = StringReplace($sUrl,"http://","")
    Endif
    TCpStartup()
    $sIp = TCPNameToIP($sUrl)
    ConsoleWrite($sIp)
    $Strato_Connect = TCPConnect($sIp,$sPort)
    _StratoCmd("o " & $sUrl)
    $o = _StratoCmd($sUrl)
    _StratoSend($sPasswort)
    If @error Then
    Exit
    Endif
    If $Strato_Connect = -1 Then
    Exit
    else
    If _StratoWait() Then
    Return 1
    Else
    Return 0
    EndIf
    Endif
    EndFunc

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

    Func _StratoWait()
    Local $sReturn = ''
    Local $recv
    Local $TimeOutTimer = TimerInit()
    $i = 0
    While TimerDiff($TimeOutTimer) < 5000
    $recv = TCPRecv($Strato_Connect, 4096)
    If @error Then
    ExitLoop
    Endif
    If $recv <> "" Then
    return $recv
    ExitLoop
    EndIf
    $i += 1
    If $i = 15 Then
    ExitLoop
    Endif
    WEnd

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

    Return ''

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

    EndFUnc

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

    Func _StratoSend($sCommand)
    TcpSend($Strato_Connect,$sCommand)
    EndFUnc

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

    Func _StratoRecv()
    $sReturn = _StratoWait()
    return $sReturn
    EndFunc

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

    Func _StratoCmd($Strato_Command)
    _StratoSend($Strato_Command)
    If Not @error Then
    Return _StratoRecv()
    else
    SetError(1)
    Endif
    EndFUnc

    [/autoit]
  • Ja kann sein das es iwie umgewandelt wird, nur wie kann ich das herausbekommen in was ich es umwandeln muss ?
    stimmt der port ist 23