[Router-Reconnect] Aus Zähler-Datei Wert auslesen+ändern, wieder abspeichern!

  • Hallo an alle!

    Ich bin leider eher ein Programmier-Novize, ... vielleicht könnt Ihr mir hier weiter helfen!
    Danke im Voraus für Eure Hilfe!

    Ich habe folgende Herausforderung: ich habe eine BATCH-Datei bzw. Teile einer Batch, die ich gerne in AutoIt3 gelöst haben möchte:

    1. Den Zahlenwert aus einer Datei. "Zahl.txt" auslesen. Falls diese Datei nicht vorhanden ist, soll sie angelegt werden mit dem Wert 10!
    2. Den Zahlenwert um 1 erhöhen und in Zahl.txt zurück schreiben (alter Zahlenwert soll überschrieben werden!). Falls der Zahlenwert >60 ist, soll der Wert wieder auf 10 gesetzt werden.

    BATCH- Teile:

    ---------------------- code Anfang ----------------------------
    hier passiert was ....

    Code
    rem - Schritt 1 (Zaehlschleife): Wert aus "Zahl.txt" aus lesen (Wichtig: für 6-Stelle Mac-Adresse)
    if not exist "zahl.txt" set /a zahl=10
    for /f %%i in (Zahl.txt) do set /a zahl=%%i

    hier passiert wieder was ....

    Code
    rem - Schritt2: Zahl.txt um Wert 1 erhöhen!!! 6te-Zweistellige Mac-Adresse von 10-60 hex !!!
    rem ----------- Die IP-Adresse wird per DHCP vom KABEL-Provider zugewiesen. LEASE-Time pro IP ~24h
    rem ----------- Bitte geht nicht inflationär mit dem Zähler um! 50x neue IP reicht!!!
    
    
    set /a zahl=zahl+1
    if %zahl%==61 set /a zahl=10
    echo %zahl% > Zahl.txt

    hier passiert wieder was ....

    -----------------------code ende -------------------------------

    Hier noch die gesamte Batch Datei sowie weitere Infos über Sinn und Zweck des ganzen:

    Spoiler anzeigen

    Quelle: [Kabel Internet] MAC WAN IP Wechsel / Change - Software Reset Bsp ReConnect.bat

    Mit meinem neuen Router D-Link DGL 4100 funktioniert die wget und curl
    Methode leider nicht. Da das Passwort beim Bowser-Login per MD5
    verschlüsselt wird. Bei jedem Login verändert sich dieser String:

    GET /post_login.cgi?data=Yf6IyzVtpp1jbaAwUXBMZvGsi3r.

    Das Auslesen dieses Strings und Weiterverarbeitung macht also keinen Sinn!!!

    Daher suche/ bastle ich nach eine Lösung mit AutoIt3 per Browser-Interface.

    Ich habe keine Idee wie man das realisieren könnte. Weiß hier jemand Rat und könnte mir helfen!


    Ich wäre für jede Lösung dankbar.


    Viele Grüße
    Satchmo

    Einmal editiert, zuletzt von Satchmo (4. November 2008 um 16:07)

    • Offizieller Beitrag

    Ich verstehe zwar nicht so ganz den Sinn dahinter, aber egal...
    Hier jetzt mal ein Script, das jede Sekunde die Zahl um eins erhöht und in die Datei schreibt:

    Spoiler anzeigen
    [autoit]


    Global $Filename = @ScriptDir & '\Zahl.txt'
    Global $Timer = TimerInit(), $Zahl, $hFile
    While True
    If Not FileExists($Filename) Then FileWrite($Filename, '10')
    If $Timer >= 1000 Then ; warten bis eine Sekunde (1000 Millisekunden) vergangen sind
    $Timer = TimerInit()
    $Zahl = FileRead($Filename)
    $Zahl += 1
    If $Zahl > 60 Then $Zahl = 10
    $hFile = FileOpen($Filename, 2)
    FileWrite($hFile, $Zahl)
    FileClose($hFile)
    EndIf
    Sleep(20)
    WEnd

    [/autoit]
  • Hier jetzt mal ein Script, das jede Sekunde die Zahl um eins erhöht und in die Datei schreibt:

    Hallo Oscar,

    vielen Dank für Deine rasche Antwort! Und Deinen Lösungsvorschlag. Du hast mir sehr geholfen!

    Etwas abgeändert sieht es so aus und funktioniert hervorragend:

    [autoit]

    Global $Filename = @ScriptDir & '\Zahl.txt'
    Global $Zahl, $hFile

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

    If Not FileExists($Filename) Then FileWrite($Filename, '10')
    $Zahl = FileRead($Filename)
    $Zahl += 1
    If $Zahl > 60 Then $Zahl = 10
    MsgBox(0," Testausgabe zur Überprüfung","Aktueller Wert von $Zahl = "&$Zahl)
    $hFile = FileOpen($Filename, 2)
    FileWrite($hFile, $Zahl)
    FileClose($hFile)

    [/autoit]

    Ich verstehe zwar nicht so ganz den Sinn dahinter, aber egal...

    Ich möchte eine neue WAN-IP von meinem Internet-Provider. Hierzu muss die Router MAC geändert werden!

    Dein Script brauche ich um die 6-Stelle meiner Router MAC zu ändern!

    Die ursprüngliche BATCH-Datei macht da folgendes (Siehe auch 1. Posting SPOILER :(

    1. History erstellen
    2. WAN IP ermittlen
    3. Kabel-Modem neustarten
    4. Zahl (aus Zahl.txt) auslesen
    5. Zahl in Router-Mac eintragen+Neustart
    6. Zahl um 1 erhöhen + Wert in Zahl.txt abspeichern
    7. Verbindung zum Internet prüfen
    8. Neue WAN-IP ermitteln
    9. Log schreiben

    Kannst Du mir vielleicht noch folgende CMD-Zeile (3. Kabel-Modem neustarten) in AutoIt konformer Syntax schreiben:

    Code
    curl -d "CmStartDownstreamFrequency=1" http://192.168.100.1/goform/gscan

    In der Batch wird das externe Programm (liegt im gleichen Verzeichnis wie zukünftig dieses Script) "CURL" aufgerufen mit den Parametern "-d "CmStartDownstreamFrequency=1" http://192.168.100.1/goform/gscan"

    Viele Grüße
    Satchmo

    2 Mal editiert, zuletzt von Satchmo (4. November 2008 um 16:05)

  • Hi,

    danke auch hier für Deine Lösung. Leider kann ich das noch nicht testen, sonst bekommen ich ärger mit meiner Regierung, wenn das Internet nicht mehr geht! ;)

    Ich kann also erst später testen!

    Gruß
    Satchmo

  • Ich verstehe zwar nicht so ganz den Sinn dahinter, aber egal...


    Oft geht es um Downloads von Freehostern wie rapidshare oder uploaded. Dort ist es meist so, dass man nach einem Download eine bestimmte Zeit warten muss, um einen weiteren Download zu starten.
    Wird nach dem Download die IP gewechselt, kann man direkt danach dem ersten Download den zweiten starten.

  • Sollte mit ShellExecute bzw. ShellExecuteWait klappen:

    [autoit]


    ShellExecute(@ScriptDir & '\curl.exe', '-d "CmStartDownstreamFrequency=1" http://192.168.100.1/goform/gscan')

    [/autoit]

    Wenn man faul ist könnte man doch auch einfach

    [autoit]

    Run("curl -d ""CmStartDownstreamFrequency=1"" http://192.168.100.1/goform/gscan")

    [/autoit]

    nehmen oder nicht ?

    Andere Leute wären froh über ne feste IP aber naja. Rapidshare sollte es nicht sein die haben ja jetzt keine Wartezeiten mehr soweit ich weiß (hab Premium da bekommt man das nicht so mit^^)

  • Sollte mit ShellExecute bzw. ShellExecuteWait klappen:

    [autoit]


    ShellExecute(@ScriptDir & '\curl.exe', '-d "CmStartDownstreamFrequency=1" http://192.168.100.1/goform/gscan')

    [/autoit]

    Hallo Oscar ,

    Deine Methode funktioniert 100%! Danke. :)


    [autoit]

    Run("curl -d ""CmStartDownstreamFrequency=1"" http://192.168.100.1/goform/gscan")

    [/autoit]

    @mehrsolala,

    Danke für Deine Alternative!
    Die "RUN"-Methode ist natürlich einfacher! Danke euch für beide Methoden!


    Andere Leute wären froh über ne feste IP aber naja. Rapidshare sollte es nicht sein die haben ja jetzt keine Wartezeiten mehr soweit ich weiß (hab Premium da bekommt man das nicht so mit^^)

    Die Leute können ja zu KABEL Deutschland wechseln, dann haben sie "quasi" eine feste WAN IP! Wegen RS brauche ich das sicherlich nicht! Ich möchte aber nicht Monate lang mit der gleichen WAN-IP rum surfen. Dazu bin viel zu PARANOID! :)

    Gruß
    Satchmo