Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Inhalt einer Datei per batch vergleichen und aktion ausführen

Frage Entwicklung Batch & Shell

Mitglied: moltova

moltova (Level 1) - Jetzt verbinden

26.06.2012, aktualisiert 15:26 Uhr, 3698 Aufrufe, 7 Kommentare

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.

01.
 
02.
wget --mirror -k -E http://192.168.0.254/ 
03.
 
04.
findstr /I "wan_ip=" "192.168.0.254\index.html">"aktuelle_ip.txt" 
05.
 
06.
Blat -install test@test.de test@test.de 
07.
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" 
08.
 

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
Mitglied: ITLogger
26.06.2012 um 11:52 Uhr
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
Bitte warten ..
Mitglied: pieh-ejdsch
26.06.2012 um 15:01 Uhr
moin Matthias,

Deine AusleseZeile könnte so aussehen:
01.
(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
Bitte warten ..
Mitglied: moltova
26.06.2012 um 15:24 Uhr
OK, Danke, werde das heute Abend mal testen und melde mich dann wieder
Bitte warten ..
Mitglied: moltova
26.06.2012, aktualisiert um 17:15 Uhr
Ok hab jetzt noch ein paar versuche Unternommen.... klappt aber irgendwie nicht so wie ich mir das Denke.
Das ist mein aktueller Code:

01.
goto kopieren 
02.
 
03.
:kopieren 
04.
wget --mirror -k -E http://192.168.0.8/ 
05.
goto auslesen 
06.
 
07.
:auslesen 
08.
findstr /I "wan_ip=" "192.168.0.8\index.html">"aktuelle_ip.txt" 
09.
goto vergleichen 
10.
 
11.
:vergleichen 
12.
(for /f delims^= %%i in ('findstr /i "wan_ip=" "192.168.0.8\index.html" ^|findstr /vg:"aktuelle_ip.txt" ') do @echo %%i>"aktuelle_ip.txt" ) 
13.
if not errorlevel 1 goto mail 
14.
if errorlevel 1 goto ende 
15.
 
16.
 
17.
:mail 
18.
Blat -install  
19.
Blat "aktuelle_ip.txt" -to  -server mail.gmx.net -u  -debug -timestamp -log blatSMTPlog.txt -subject "aktuelle Router IP" 
20.
goto ende 
21.
 
22.
:ende 
23.
pause 
24.
exit
hab im mail Block nur meine Passwörter ec entfernt also nicht wundern das der ein wenig anders aussieht

Achso, so sieht die Zeile aus, die er suchen und vergleichen soll

var wan_ip='88.79.158.135';
Bitte warten ..
Mitglied: pieh-ejdsch
26.06.2012 um 21:47 Uhr
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:
01.
wget --mirror -k -E http://192.168.0.254/ 
02.
 
03.
(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 
04.
 
05.
Blat -install test@test.de test@test.de 
06.
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
Bitte warten ..
Mitglied: moltova
26.06.2012 um 22:20 Uhr
Danke für Deine Hilfe, manchmal sieht man den Wald vor lauter Bäumen nicht mehr. Ok habe den Skript nach Deinem Vorschlag angepasst. Leider versendet er immer noch Emails, er sendet wenn ich den Router Neu verbunden habe und eine Neue IP habe und er sendet auch bei allen weiteren Tests danach obwohl die IP Adresse im Skript und der txt gleich geblieben sind.


wo ist der Fehler?

mfg Mathes
Bitte warten ..
Mitglied: moltova
27.06.2012 um 15:45 Uhr
So habe es jetzt durch folgende Zeile gelöst:

fc /L /N "aktuelle_ip.txt" "alte_ip.txt"
if errorlevel 1 goto mail
goto ende

habe noch eine 2te TXT eingebaut, wo nach dem versenden der eMail die aktuelle IP in die txt Datei "alte_Ip.txt" geschrieben wird.

so funktioniert alles prima

Danke für die Hilfen
Bitte warten ..
Ähnliche Inhalte
Windows Tools
gelöst Powershell - Auswahl aus Listbox soll Aktion ausführen (4)

Frage von Schmierlappen zum Thema Windows Tools ...

Batch & Shell
gelöst Mehrzeiligen Powershell-Befehl mit Batch ausführen (3)

Frage von 133202 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Server-Hardware
gelöst Empfehlung KVM over IP Switch (8)

Frage von Androxin zum Thema Server-Hardware ...

Ubuntu
Nextcloud 12 Antivirus App for Files (8)

Frage von horstvogel zum Thema Ubuntu ...