[VisualBasic] Klitzekleines Telnet Progrämmchen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von alienalireal2, 25. November 2006 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 25. November 2006
    Klitzekleines Telnet Progrämmchen

    Hallo,

    ich habe einen Router, den man nur über Telnet zu einer neuen IP bringen kann. Deshalb habe ich mich ein bisschen informiert und einen VisualBasicScript hinbekommen, mit dem der Router resettet wird, klappt auch soweit ganz gut.

    Code:
    Dim wshShell
    Set wshShell=CreateObject("Wscript.Shell")
    wshShell.Run "telnet 192.168.xxx.xxx",,False
    WScript.Sleep 1000
    wshShell.SendKeys "user", True
    wshShell.SendKeys "{ENTER}", True
    WScript.Sleep 1000
    wshShell.SendKeys "pass", True
    wshShell.SendKeys "{ENTER}", True
    WScript.Sleep 1000
    wshShell.SendKeys "sys reboot", True
    wshShell.SendKeys "{ENTER}", True
    WScript.Sleep 5000
    wshShell.SendKeys "a", True
    Allerdings möchte ich nciht, dass der Windows Scripting Host gestartet ist und wollte diesen Code deshalb kompilieren. Hab ich mich wieder schlau gemacht und mir Visual Basic 6 besorgt, den Code dort eingefügt und auf kompilieren gedrückt. Er hatte aber ein Problem mit dem Set-Befehl.

    Wie krieg ich also diesen Code zum laufen als klitzekleine exe?

    Vielen Danke im vorraus.
     
  2. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Code:
    Private Sub Form_Load()
    Shell "telnet 192.168.x.x", vbNormalFocus
    GoSleep (1000)
    SendKeys "user" & vbCrLf
    GoSleep (1000)
    SendKeys "pass" & vbCrLf
    GoSleep (1000)
    SendKeys "sys_reboot" & vbCrLf
    GoSleep (1000)
    SendKeys "a" & vbCrLf
    GoSleep (1000)
    End Sub
    Public Sub GoSleep(ByVal Millisekunden As Long)
     Dim startzeit As Single
     startzeit = Timer
     Do
     DoEvents
     Loop Until Timer - startzeit > (Millisekunden / 1000)
    End Sub
    vbcrlf = enter
     
  3. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Vielen Dank an dieser Stelle, hab gleich mal ein wenig deine bewertung gepusht. Hab aber noch ein paar fragen:

    1) Wie lautet der Befehl für die Escapetaste, da ich anstatt der Eingabe von einer Beliebigen Taste (a) lieber ESC zum beenden des Telnetterminalfensters eingeben lassen möchte.

    2) Wie kann ich es verhindern, dass während der Ausführung des Programms ein leeres kleines Fenster mit dem Titel Form1 erscheint oder wie kann ich dieses automatisch nach Ausführung des Codes schließen lassen?

    3) Gibt es eine Möglichkeit direkt eine Telnetverbindung aufzubauen (natürlich mit VB Code) und die Befehle auszuführen ohne den unschönen Weg der Bildschirmeingabe ins Terminalfenster?
     
  4. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    keine ahnung tut mir leid
    einfach ein 'end' vor das 'end sub' setzen

    also
    Code:
    Private Sub Form_Load()
    [...]
    GoSleep (1000)
    end
    End Sub
    
    klar möglich, z.b. mit winsocks...
    is aber n bissl komplizierter, kannst ja ma bei google suchen
     
  5. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    1: versuchs mit vbKeyEscape anstadt von "a"
    2: bei form load: Me.Hide
    3: Ja über Winsock (enfach mal nach nem tut googlen)
    edit: Da war wieder einer schneller
     
  6. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    So, erstmal wieder danke + Bewertungen.

    Die richtige Kombi für escape ist: Sendkeys "{ESC}", aber er schließt das terminalfester trotzdem nciht, was mach ich falsch?

    Wo soll das Me.Hide genau hin? ich habe es in die klammern gesetz, davor, dahinter anstatt on formload, klappt aber alles nciht? kannst du das bitte noch genauere erklären?

    Danke.
     
  7. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Code:
    Private Sub Form_Load()
    me.hide
    Shell "telnet 192.168.x.x", vbNormalFocus
    ...
    ...
    end sub
     
  8. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    versuchs mal mit Sendkeys {ESC} ohne ""
    und wen sich das fenter patu nicht schließen lässt, versuchs einfach mal mit: Shell "tskill telnet"
     
  9. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Dankeschön an alle. Klappt soweit wunderbar. Jetz werd ich mir mal Wissen über WinSock anlesen, um das ganze ein wenig proffesioneller zu machen^^

    Figger hat seine Bewertung bekommen.

    Danke.
     
  10. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    naja ich würde das ganze NICHT per me.hide machen!

    da der prozess sonst immer weiter läuft (kannste ja im task-manager nachschaun..) machs lieber per "end" !

    hab mir grad 30 sekunden ze
     
  11. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Vielen Dank an DarkRaven, aber er er zeigt mir beim starten des Programms den fhelercode 424: objekt erforderlich. Ahhh. Bitte helfen.
     
  12. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Er will das Fenster während das Programm Läuft verstecken und es erst am Ende beenden.

    Es waren 2 Fragen

    Gruß,
    Figger

    EDIT: @ alienalireal2: In welcher Zeile kommt der Fehler? Geh das Programm mal mit dem Debugger schritt für schritt durch.(Einfach F8 drücken)
     
  13. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Hier der Code von DarkRaven. Danke nochmals.

    Code:
    Private Sub Form_Load()
    Winsock1.Connect "192.168.x.x", 23
    End Sub
    
    Private Sub Timer1_Timer()
    Me.Caption = Winsock1.State
    End Sub
    
    Private Sub Winsock1_Close()
    End
    End Sub
    
    Private Sub Winsock1_Connect()
    Winsock1.SendData "user" & vbCrLf
    GoSleep (100)
    Winsock1.SendData "pass" & vbCrLf
    GoSleep (100)
    Winsock1.SendData "sys reboot" & vbCrLf
    GoSleep (100)
    Winsock1.SendData "quit" & vbCrLf
    GoSleep (100)
    End Sub
    
    Public Sub GoSleep(ByVal Millisekunden As Long)
     Dim startzeit As Single
     startzeit = Timer
     Do
     DoEvents
     Loop Until Timer - startzeit > (Millisekunden / 1000)
    End Sub
    
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Winsock1.GetData Data$
    Text1 = Text1 & Data
    End Sub
    
    Ich glaube hier liegt das Problem:

    Code:
    Private Sub Timer1_Timer()
    Me.Caption = Winsock1.State
    End Sub
     
  14. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    jup und genau das passiert wenn er das so macht wie ich es geschrieben habe

    form_load, da ist das fenster NICHT sichtbar, erst nach dem 'end sub' wird es sichtbar, wenn davor das "end" kommt ist es NIE sichtbar

    @alienalireal2: keine ahnung, bei mir klappts

    edit: wenn der fehler am "Me.Caption = Winsock1.State" liegt, dann lösch die zeile einfach, die is sowieso unwichtig ^^
     
  15. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Liegt es vllt daran, dass ich vb 6 verwende? Ich glaub das ding is von 98.
     
  16. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    nope, ich benutze auch vb6!
    sollte eigentlich klappen wie gesagt...

    wenn er bei dem me.caption meckert dann lösch die zeile einfach... (also das gesamte 'timer1_.[..]' bis 'end sub')
     
  17. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Das ist VB6 Code, den kannst du nur mit VB6 ausführen
     
  18. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Hab dir mal so ein kleines Programm gemacht, das wie Telnet funktioniert:

    Du kannst dich zu Servern verbinden und Befehle hinschicken. (Es wird immer vbCrLf, also neue Zeile angehängt).

    Hier der Link
     
  19. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Ich hab jetz:

    Private Sub Timer1_Timer()
    Me.Caption = Winsock1.State
    End Sub

    gelöscht. problem bleibt weiterhin bestehen.

    Edit:
    Bewertun an Gibbon
    Aber ich möchte doch ei proggi, dass das automatisch tut während ich weg bin ohne eingaben.
     
  20. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Öööhm, hast du überhaupt ein Timer Objekt auf deiner Form?
     
  21. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Wie find ich das heraus? Ich komme grad erst in VB rein und kenn mich da noch nicht aus.
     
  22. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Dann haben wir den Fehler wohl gefunden

    Du musst auf deine Form aus der Komponentenleiste Links ein Timerobjekt ziehen, einfach per Drag&Drop. Das ist die kleine Uhr. Dann sollte es gehen.

    EDIT: Ein Winsock Objekt brauchst du natürlich auch noch. Und eine Textbox.
     
  23. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Ist schon eine drauf. Hmm.
     
  24. 25. November 2006
    AW: Klitzekleines Telnet Progrämmchen

    Man könnte es so machen, dass sich das Prog nach einer eingestellten Zeit zu einem Server verbindet, die Befehle sendet und die Verbindung wieder schließt. Willst du sowas?
     
  25. 25. November 2006
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Klitzekleines Telnet Progrämmchen

    Naja, eigentlich schon. Der Code wurde ja auch schon von DarRaven fertigestellt, aber das kompilieren funktioniert leider nicht bei mir. Keine Ahnung warum nicht.

    Edit:

    Winsock scheint noch nciht drauf zu sein, aber ich kann da nix mehr rafschieben :-(

    Bild
     
  26. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.