Inhalt einer Datei per batch vergleichen und aktion ausführen
Hi,
da mein Kopf gerade total raucht, dachte ich, ich wende mich vertrauensvoll an Euch
Mein Problem (Denkblockade oder wie auch immer)
Ich habe einen Skript geschrieben,der die HTML Daten des Webinterfaces meines Routers herunterlädt und die Zeile filter, wo die aktuelle IP Adresse des ISP angezeigt wird. Diese IP Adresse wird danach in ein TXT File geschrieben. Danach wird per skript der Inhalt dieses TXT Files per Email versendet. Soweit kalppt das perfekt. Habe das ganze auf meinem HomeServer per Aufgabenplaner am laufen und dieser sendet schön brav alle 2 Stunden die aktuelle IP des Routers.
Jetzt möchte ich aber, das der Skript erst in den Emailabschnitt springt, wenn sich die IP Adresse geändert hat.
Wie kann ich das abfragen? Habe schon versucht mit 2 TXT Daten zu Arbeiten aber jetzt bin ich gerade an einem Punkt wo mir absolut der Kopf raucht?!?!?!?!
Hier mein Skript damit Ihr Euch das besser Vorstellen könnt.
Das ganze läuft schön als cmd
Vielen Dank
Matthias
NACHTRAG: wie erzeugt man hier im Forum dieses Fenster für Codeschnipsel für Programmierungen etc?!
Nachtrag 2: die Frage aus "Nachtrag" klappt ja schoneinmal
da mein Kopf gerade total raucht, dachte ich, ich wende mich vertrauensvoll an Euch
Mein Problem (Denkblockade oder wie auch immer)
Ich habe einen Skript geschrieben,der die HTML Daten des Webinterfaces meines Routers herunterlädt und die Zeile filter, wo die aktuelle IP Adresse des ISP angezeigt wird. Diese IP Adresse wird danach in ein TXT File geschrieben. Danach wird per skript der Inhalt dieses TXT Files per Email versendet. Soweit kalppt das perfekt. Habe das ganze auf meinem HomeServer per Aufgabenplaner am laufen und dieser sendet schön brav alle 2 Stunden die aktuelle IP des Routers.
Jetzt möchte ich aber, das der Skript erst in den Emailabschnitt springt, wenn sich die IP Adresse geändert hat.
Wie kann ich das abfragen? Habe schon versucht mit 2 TXT Daten zu Arbeiten aber jetzt bin ich gerade an einem Punkt wo mir absolut der Kopf raucht?!?!?!?!
Hier mein Skript damit Ihr Euch das besser Vorstellen könnt.
wget --mirror -k -E http://192.168.0.254/
findstr /I "wan_ip=" "192.168.0.254\index.html">"aktuelle_ip.txt"
Blat -install test@test.de test@test.de
Blat "aktuelle_ip.txt" -to test@test.de -server mail.gmx.net -u test@test.de -pw test@test.de -debug -timestamp -log blatSMTPlog.txt -subject "aktuelle Router IP"
Das ganze läuft schön als cmd
Vielen Dank
Matthias
NACHTRAG: wie erzeugt man hier im Forum dieses Fenster für Codeschnipsel für Programmierungen etc?!
Nachtrag 2: die Frage aus "Nachtrag" klappt ja schoneinmal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 187064
Url: https://administrator.de/contentid/187064
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
7 Kommentare
Neuester Kommentar
Direkt mit Code kann ich Dir nicht helfen. Aber mit einer generellen Idee, denn Dateien auslesen und schreiben kannst Du ja:
Schreibe die aktuelle IP z.B. in zwei Textdateien: aktuelle_ip.txt und letzte_ip.txt. Nur wenn sich diese unterschen fürst Du die Mail Aktion aus. Grundgerüst:
1 Webseite auslesen
2 Findstr ausführen -> IP in aktuelle IP schreiben und zusätzlich in Variable %IP%
3 Letzte_ip.txt auslesen und mit aktueller %IP% vergleichen, wenn gleich, dann Ende, wenn unterschiedlich dann folgende Schritte
4 aktuelle IP in letzte_ip.txt schreiben
5 Mail versenden
Schreibe die aktuelle IP z.B. in zwei Textdateien: aktuelle_ip.txt und letzte_ip.txt. Nur wenn sich diese unterschen fürst Du die Mail Aktion aus. Grundgerüst:
1 Webseite auslesen
2 Findstr ausführen -> IP in aktuelle IP schreiben und zusätzlich in Variable %IP%
3 Letzte_ip.txt auslesen und mit aktueller %IP% vergleichen, wenn gleich, dann Ende, wenn unterschiedlich dann folgende Schritte
4 aktuelle IP in letzte_ip.txt schreiben
5 Mail versenden
moin Matthias,
Deine AusleseZeile könnte so aussehen:
Nachtrag:
Die Codeschnipsel erzeugst Du mit
<code>Codezeilen</code>
auch nachzulesen in der Formatierungshilfe in den FAQ
Gruß Phil
Deine AusleseZeile könnte so aussehen:
(for /f delims^= %%i in ('findstr /i "wan_ip=" "192.168.0.254\index.html" ^|findstr /vg:"aktuelle_ip.txt" ') do @echo %%i>"aktuelle_ip.txt" ) || exit /b 0
Nachtrag:
Die Codeschnipsel erzeugst Du mit
<code>Codezeilen</code>
auch nachzulesen in der Formatierungshilfe in den FAQ
Gruß Phil
hallo Matthias,
goto Marke und danach die Zeile :Marke ist verschwendeter Platz in dem Batch.
Die von mir hingeschriebene Zeile ist als Ersatz für die Zeile 04 in Deinem StartBeitrag gedacht.
Wenn Du jetzt die "Aktuelle_IP.TXT" schon vorher veränderst, wird die von mir geschriebene Zeile nicht Funktionieren. Sie wird ja von der Forschleife Verändert (die "aktuelle_ip.txt") bei unterschieden.
Den Errorlevel der ('Anweisung') in der Forschleife kannst Du nicht Auslesen, weil diese in einem Seperaten CMD-kontex ausgeführt wird.
So war es gedacht, mit Klammer und wenn Gleich dann Batchende:
Gruß Phil
goto Marke und danach die Zeile :Marke ist verschwendeter Platz in dem Batch.
Die von mir hingeschriebene Zeile ist als Ersatz für die Zeile 04 in Deinem StartBeitrag gedacht.
Wenn Du jetzt die "Aktuelle_IP.TXT" schon vorher veränderst, wird die von mir geschriebene Zeile nicht Funktionieren. Sie wird ja von der Forschleife Verändert (die "aktuelle_ip.txt") bei unterschieden.
Den Errorlevel der ('Anweisung') in der Forschleife kannst Du nicht Auslesen, weil diese in einem Seperaten CMD-kontex ausgeführt wird.
So war es gedacht, mit Klammer und wenn Gleich dann Batchende:
wget --mirror -k -E http://192.168.0.254/
(for /f delims^= %%i in ('findstr /i "wan_ip=" "192.168.0.254\index.html" ^|findstr /vg:"aktuelle_ip.txt" ') do @echo %%i>"aktuelle_ip.txt" ) || exit /b 0
Blat -install test@test.de test@test.de
Blat "aktuelle_ip.txt" -to test@test.de -server mail.gmx.net -u test@test.de -pw test@test.de -debug -timestamp -log blatSMTPlog.txt -subject "aktuelle Router IP"
Gruß Phil