Batch IP-Adresse

crazymischl

Erfahrenes Mitglied
Hallo an alle User !
Ich habe mal eine Frage: ist es irgendwie möglich, die öffentliche IP-Adresse in ein logfile zu schreiben (z.B. per batch).
Also nicht die interne (192.168...) sondern die öffentliche (z.B. 84.158.89.1XX).
Also die Adresse die mein Router bekommt, wenn er sich jeden Tag neu einwählt.
Kennt da jemand eine Lösung? Mit batch (ipconfig) bekomme ich ja nur die Interne IP-Adresse. Kann ich auch an die Öffentliche rankommen ?
Ich will diese datei automatisieren also bei jedem start von windows ausführen. Da ich eine Flatrate habe bin ich immer mit dem Internet verbunden.
Vielen Dank schonmal !

Edit: möchte nochmal genauer erklären:
Ich will diese IP-Adresse (die sich ja jeden Tag ändert) in ein logfile speichern und das logfile auf einen ftp server laden. FTP server ist mit batch kein problem, hab ich auch mit batch hinbekommen eine datei hochzuladen nur wie komme ich an die IP :confused:.
Danke schonmal !
 
Zuletzt bearbeitet:
Hallo!

Mein Vorschlag:
Man besorge sich Wget und Wput in der Windowsversion.

Dann schreibe man ein kleines PHP-Script:
PHP:
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
und lade dieses auf seinen Webspace hoch.

Anschliessend schreibe man eine Batchdatei:
Code:
cd C:\Programme\GnuWin32\bin
wget http://www.domain.de/my_ip.php -t 0 -O C:\logfile.txt
cd C:\wput-0.6\wput
wput -A C:\logfile.txt ftp://USER:PASS@server.de/logfile.txt
und packe diese in den Autostart-Ordner.

Dateinamen, Benutzerdaten, Servernamen, Dateinamen und die Pfade müssen ggf. noch angepasst werden.

Gruss Dr Dau
 
Hallo nochmal an alle!
Danke an Dr Dau, das wget funktioniert perfekt!
Ich hab aber jetzt ein kniffliges problem: Ich will die IP-Adressen einfach untereinander wegschreiben lassen, die neueste ganz oben. Dazu lasse ich die alte log-datei umbenennen, eine neue mit der neuen IP drin erstellen und die alte dann da dran hängen:

Das Prinzip:
Code:
ren log.txt temp.txt
echo NeueIP >> log.txt
for /f %%i in (temp.txt) do echo %%i >> log.txt
del temp.txt
pause

In der "Prinzip"-Batch funktioniert es, nur in der "realen" batch nicht. Ich komm einfach nicht hinter den Fehler.
Hier ist meine batch:

Code:
// ist nur hier zum Kommentar:
@echo off
REM ********************************************************************************************
Set "dir=C:\ftp"                                   // setzt quellordner
Set "log=log.txt"                                  // setzt log namen
Set "logt=log_temp.txt"                            // setzt temp namen
REM ********************************************************************************************
ren %dir%\%log% %logt%                  // nennt log in temp um
cd C:\Programme\GnuWin32\bin            // geht zu wget
wget http://b2x.b2.funpic.de/ip_adr/ip.php -t 0 -O %dir%\%log%  // bezieht IP, legt neue log mit IP an
for /f %%i in (%dir%\%logt%) do echo %%i >> %dir%\%log%        // hängt temp an log an
del %dir%\%logt%                                               // löscht temp
REM ********************************************************************************************
pause
exit

Es schreibt nur 2 Adressen in die log datei, wenn ich dann nochmal ausführe löscht es die älteste. Außerdem schreibt es die Adressen nicht unter- sondern nebeneinander.
Wo ist der fehler? Das ist doch genau wie die "Prinzip" Batch! :confused:
Danke schon einmal wenn einer Rat weiß !

//edit:

Ok habs rausgekriegt einfach noch ein
Code:
echo.>>log.txt
zwischenreinhängen.
Das erzwingt einen Zeilenumbruch in der Textdatei und schreibt somit alles weitere dann drunter :)

Aber nocheinmal Danke an Dr Dau für diese sehr ausführliche und perfekte Lösung !
Danke ! :)
 
Hier nochmal überarbeitet und zusammengefügt.
Pfade, Variablen und Domain sind wählbar.
Wenn der Pfad bei wput Leerzeichen enthällt, sollte links und rechts vom Pfad ein Anführungszeichen ( " ) gesetzt werden.

Bei USER ist zu beachten: heißt der Benutzername
Code:
Alfred@domain.de
, dann muss der ftp Befehl so angepasst werden:
Code:
ftp://Alfred@domain.de:Passwort@domain.de/log.txt
Code:
@echo off
REM *Variablendeklaration*
Set "dir=C:\ftp"
Set "log=log.txt"
Set "logt=log_temp.txt"
REM *IP_holen_und_speichern*
ren %dir%\%log% %logt%
cd "C:\Programme\GnuWin32\bin"
wget http://b2x.b2.funpic.de/ip_adr/ip.php -t 0 -O %dir%\%log%
echo.>>%dir%\%log%
cls
for /f %%i in (%dir%\%logt%) do echo %%i>>%dir%\%log%
del %dir%\%logt%
REM *log.txt_auf_Webspace_hochladen*
cd "C:\wput-0.6\wput"
wput -A C:\ftp\log.txt ftp://USER:PASS@server.de/log.txt
cls
exit

Die log.txt sieht dann so aus:
(xe stehen für Zahlen, oben steht die neueste IP)
Code:
xx.xxx.xx.xx

xx.xxx.xx.xx
xx.xxx.xx.xx
xx.xxx.xx.xx
xx.xxx.xx.xx
 
@Dr. Dau:
Kann man Wget und Wput auch minimiert oder im Hintergrund starten, sodass das cmd Fenster nicht immer aufpopt?
 
Hi chrysler.
schau dir mal start /? an, ich glaube man kann start /min datei.bat die bat minimiert starten lassen.
Schau mal hier rein.
Du kannst es aber auch so machen wie ich, ich habe die batch datei in eine exe compilliert mit Quick Batch file compiller.
Edit: hab ne PM an dich geschickt.
 
Zuletzt bearbeitet:
Zurück