mesterdisast
Goto Top

Externe IP ermitteln und in Datei Speichern

Guten Abend,

ich suche ein Script (batch oder ähnliches), dass mir die Externe IP des Computers ermittelt und dann in ein Textdokument schreibt.
zusätzlic soll noch protokolliert werden, welcher Benutzer gerade zu diesem zeitpunkt an dem Computer gewesen ist.

mit freundlichen Grüßen
mesterdisast

Content-ID: 147957

Url: https://administrator.de/contentid/147957

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

45877
45877 29.07.2010 um 18:25:18 Uhr
Goto Top
Hallo,

ist der rechner direkt am Netz oder in einem LAN?
Mesterdisast
Mesterdisast 29.07.2010 um 18:27:07 Uhr
Goto Top
Hallo,

der Rechner ist über einen Switch an das Netz angeschlossen. es sind noch weitere Clients am Switch.Es ist kein server vorhanden, da es ein Heimnetzwerk ist .

mfg
mesterdisast
60730
60730 29.07.2010 um 18:44:09 Uhr
Goto Top
Moin,
Zitat von @45877:
Hallo,

ist der Rechner direkt am Netz oder in einem LAN?
  • Welche externe Ip solls denn sein - denn wenn er im Lan ans Wan angeschlossen ist - hat er die gleiche, die der Router vom Provider bekommen hat.
  • Welches der Osse aus Redmont? wäre es denn?
  • Und wenns ein Serverler ist - ist der im TS Server Mode oder ganz banal?
  • jeweils für der Kiste die frägen tut - und die die stasifiziert werden soll?

Schreib mal genau was du haben willst - denn sonst fallen mir leider noch ganz viele Wenn und abers ein face-wink

Gruß
Mesterdisast
Mesterdisast 29.07.2010 um 18:53:58 Uhr
Goto Top
Doppelpost s.u.
Mesterdisast
Mesterdisast 29.07.2010 um 18:55:16 Uhr
Goto Top
Zitat von @60730:
Hallo nochmal,
entschuldige dass ich oben zu wenige angaben über den status des Netzweks/Pc´s gemacht habe.

  • Welche externe Ip solls denn sein - denn wenn er im Lan ans Wan angeschlossen ist - hat er die gleiche, die der >Router
vom Provider bekommen hat.

Also wenn man z.b auf die Seite ( http://www.wieistmeineip.de/ ) geht bekommt man dort seine Externe Ip angezeigt und genau diese
möchte ich haben. Wenn du damit verstehst was ich meine.

* Welches der Osse aus Redmont? wäre es denn?
Ich hab hier Windows XP 32bit Professional, Windows Vista 32bit Home Premium und Windows 7 64 bit Ultimate
* Und wenns ein Serverler ist - ist der im TS Server Mode oder ganz banal?
???
>* jeweils für der Kiste die frägen tut - und die die stasifiziert werden soll?
??

mfg Mesterdisast
Friemler
Friemler 29.07.2010 um 19:13:07 Uhr
Goto Top
Hallo Mesterdisast,

wenn Deine Rechner alle an einem Router hängen, ist ihre externe IP bei allen gleich. Es gibt das Kommandozeilentool wget, mit dem Du per Batch einen Download machen kannst. Gib als Quelladresse folgendes an: http://www.whatismyip.com/automation/n09230945.asp . Es kommt dann ein Dokument zurück, dessen einziger Inhalt Deine externe IP ist. wget hat viele Optionen, es wäre Dein Part, Dich damit zu beschäftigen.

Was noch zu klären wäre ist, ob Du die Abfrage, welcher User an den Rechnern angemeldet ist, vom jeweiligen Rechner machen willst oder von einem "Zentralrechner" aus.

Gruß
Friemler
Mesterdisast
Mesterdisast 29.07.2010 um 19:18:12 Uhr
Goto Top
Zitat von @Friemler:
Hallo Mesterdisast,

wenn Deine Rechner alle an einem Router hängen, ist ihre externe IP bei allen gleich. Es gibt das Kommandozeilentool wget,
mit dem Du per Batch einen Download machen kannst. Gib als Quelladresse folgendes an:
http://www.whatismyip.com/automation/n09230945.asp . Es kommt dann ein Dokument zurück, dessen einziger Inhalt Deine externe
IP ist. wget hat viele Optionen, es wäre Dein Part, Dich damit zu beschäftigen.

ok da schau ich dann mal nach

Was noch zu klären wäre ist, ob Du die Abfrage, welcher User an den Rechnern angemeldet ist, vom jeweiligen Rechner
machen willst oder von einem "Zentralrechner" aus.

Die Abfrage soll an jedem einzelnen rechner per GPO/Autostart ausgefüht werden.
mfg mesterdisast
Friemler
Friemler 29.07.2010 um 19:22:40 Uhr
Goto Top
Hallo Mesterdisast,

der Name des angemeldeten Users steht in der Systemvariablen %USERNAME%.

Gruß
Friemler
60730
60730 29.07.2010 um 19:35:21 Uhr
Goto Top
Moin,


zu haar
genau dieser Thematik haben wir uns (speziell Bastla) schon ziemlich genau mit allen Umständen auseinandergesetzt - den Fred sollte man in der Suche hier finden können.

@ Friemler - nein - diese Systemvariable ist keine, das ist eine Uservariable - daher greift der Tipp voll ins rote ;-(
(Da kommt - wenn überhaupt der Name desjenigen raus - der das Script startet - das müste also auf dem Rechner selber gesehen - und das das u.U. witzlos ist - ist ja klar)

PS:Ich würde da ja was vom Mark empfehlenloggedon face-wink

Gruß
Die PSTools von SysinternalsMicrosoft sind für viele nette Sachen eine Goldgrube - auch für diese.
Mesterdisast
Mesterdisast 29.07.2010 um 19:54:42 Uhr
Goto Top
nabend nochmal wenn ich das script von bastla einsetze, dann bekomm ich nur gesagt: Echo ist ausgeschaltet (OFF)

habe noch pause am ende eingefügt damit ich es lesen kann.

Zitat von @bastla:

@echo off & setlocal
set URL=http://www.wieistmeineip.de/
 
 set G=%temp%\GetHTML.vbs
 echo Set Http=CreateObject("WinHttp.WinHttpRequest.5.1"):Http.Open  
 "GET",WScript.Arguments(0),False:Http.Send:WScript.Echo Http.ResponseText>%G%  

 set ExtIP=
 for /f "tokens=2 delims=<>" %%i in ('cscript //nologo %G% "%URL%"^|findstr /c:"<h1  
 class=\"ip\">"') do set ExtIP=%%i  
 del %G%
 
 if not defined ExtIP echo Externe IP konnte nicht ermittelt werden. & goto :eof
 echo %ExtIP%
 
Friemler
Friemler 29.07.2010 um 19:54:49 Uhr
Goto Top
Hallo TimoBeil,

Zitat von @60730:
...das müste also auf dem Rechner selber gesehen - und das das u.U. witzlos ist - ist ja klar

Naja, das will er ja gerade, siehe das Posting vor meinem. Über die Sinnhaftigkeit des ganzen habe ich auch schon so meine Überlegungen angestellt...

Gruß
Friemler
mrtux
mrtux 29.07.2010 um 20:11:21 Uhr
Goto Top
Hi !

Zitat von @Mesterdisast:
habe noch pause am ende eingefügt damit ich es lesen kann.

Ähhhmmm, warum wundert mich das jetzt nicht? :-P

mrtux
bastla
bastla 29.07.2010, aktualisiert am 18.10.2012 um 18:42:59 Uhr
Goto Top
Hallo Mesterdisast!

Nimm lieber die "dyndns"-Variante von hier ...

Grüße
bastla
Biber
Biber 29.07.2010 um 20:16:49 Uhr
Goto Top
Moin Mesterdisast,

Zeile 05/06 sowie Zeile 09/10 sind jeweils EINE etwas längere Zeile.

Alternativ & zur Lesbarkeit: An den gewünschten Stellen Zeilenumbruch einfügen - aber so, dass auch "Befehlszeilen" jeweils komplett sind
Also so:

@echo off & setlocal
set URL=http://www.wieistmeineip.de/
 
 set G=%temp%\GetHTML.vbs
 echo Set Http=CreateObject("WinHttp.WinHttpRequest.5.1"):Http.Open "GET",WScript.Arguments(0),False:Http.Send:WScript.Echo Http.ResponseText>%G%  

 set ExtIP=
 for /f "tokens=2 delims=<>" %%i in ('cscript //nologo %G% "%URL%"^|findstr /c:"<h1 class=\"ip\">"') do set ExtIP=%%i  
 del %G%
 
 if not defined ExtIP echo Externe IP konnte nicht ermittelt werden. & goto :eof
 echo %ExtIP%
 

-oder so: -
@echo off & setlocal
set URL=http://www.wieistmeineip.de/
 
 set G=%temp%\GetHTML.vbs
 echo Set Http=CreateObject("WinHttp.WinHttpRequest.5.1") >%G%  
echo Http.Open"GET",WScript.Arguments(0),False:Http.Send:WScript.Echo Http.ResponseText>>%G%  

 set ExtIP=
 for /f "tokens=2 delims=<>" %%i in (  
          'cscript //nologo %G% "%URL%"^|findstr /c:"<h1 class=\"ip\">"'  
) do set ExtIP=%%i
 del %G%
 
 if not defined ExtIP echo Externe IP konnte nicht ermittelt werden. & goto :eof
 echo %ExtIP%
 

Grüße
Biber

P.S. @t-mo:
Marks [ps]LoggedOn funktioniert aber nur bei erlaubtem Remote-Registry-Zugriff auf jeden Rechner -
und der ist auch nicht mehr automatisch durch Adminrechte gewährleistet AFAIK
Friemler
Friemler 29.07.2010 um 20:36:36 Uhr
Goto Top
Hallo Mesterdisast,

ich habe auch das Skript aus dem Original-Posting von Bastla getestet, es hat nicht funktioniert. Statt tokens=2 muss es tokens=3 heißen. So funktioniert es jedenfalls bei mir.

Gruß
Friemler
Mesterdisast
Mesterdisast 29.07.2010 um 21:01:02 Uhr
Goto Top
das Tool ist gut nur muss ich jetzt das ausgelesene noch in eine Datei bekommen (zb IP.log oder IP.txt ... ) dazu soll dann noch der Benutzername und die Uhrzeit wann sich der benutzer eingeloggt hat.
mfg mesterdisast
Mesterdisast
Mesterdisast 29.07.2010 um 21:21:48 Uhr
Goto Top
also hallo nochmal,

den benutzer und die zeit habe ich mit

@echo off
echo %Username% , %time:~0,2%:%time:~3,2%:%time:~6,2%
pause

ausgelesen
jetzt wie bekomme ich das in eine txt datei rein? dann hab ich ja schon einen teil dann fehlt nur noch die ip
Biber
Biber 29.07.2010 um 21:22:59 Uhr
Goto Top
Moin Friemler,

deinen Test mit "Tokens=3" statt tokens=2 kann ich wiederum nicht reproduzieren.
[CMD-Prompt-Demo. Das führende ">" NICHT mit eingeben, gehört zu meinem Prompt,]
(=21:20:18  D:\temp=)
>for /f "delims=<> tokens=2" %i in ("<h1 class="ip">200.200.200.200</h1>") do @echo %i
200.200.200.200

(=21:20:23  D:\temp=)
>for /f "delims=<> tokens=3" %i in ("<h1 class="ip">200.200.200.200</h1>") do @echo %i
/h1

bastla
bastla 29.07.2010 um 21:28:07 Uhr
Goto Top
Hallo Mesterdisast!
@echo off & setlocal
set "Log=D:\Dein Pfad\IP.txt"  

set URL=http://checkip.dyndns.com/
set G=%temp%\GetHTML.vbs
echo On Error Resume Next:Set Http=CreateObject("WinHttp.WinHttpRequest.5.1"):Http.Open "GET",WScript.Arguments(0),False:Http.Send:Q=Split(Http.ResponseText,":")(1):WScript.Echo Trim(Split(Q,"<")(0))>%G%  
set ExtIP=
for /f %%i in ('cscript //nologo %G% "%URL%"') do set "ExtIP=%%i"  
del %G%
if not defined ExtIP echo Externe IP konnte nicht ermittelt werden. & goto :eof

echo %Username% , %time:~0,2%:%time:~3,2%:%time:~6,2% , %ExtIP% >>"%Log%"  
Grüße
bastla
Friemler
Friemler 29.07.2010 um 21:31:28 Uhr
Goto Top
Hallo Mesterdisast,

Zeile 2 Deines Schnipsels muss lauten:

echo %Username% , %time:~0,2%:%time:~3,2%:%time:~6,2%>Log.txt

Die Zeile von Bastla's Skript, in der die externe IP ausgegeben wird, ergänzt Du um >>Log.txt

Mit > leitest Du die Ausgabe eines Befehls in eine Datei um, die dann neu angelegt wird. Mit >> leitest Du ebenfalls die Ausgabe um, hängst den Text aber an eine Datei an.

Gruß
Friemler
Mesterdisast
Mesterdisast 29.07.2010 um 21:34:20 Uhr
Goto Top
Zitat von @bastla:
Hallo Mesterdisast!
@echo off & setlocal
> set "Log=D:\Dein Pfad\IP.txt"  
> 
> set URL=http://checkip.dyndns.com/
> set G=%temp%\GetHTML.vbs
> echo On Error Resume Next:Set Http=CreateObject("WinHttp.WinHttpRequest.5.1"):Http.Open  
> "GET",WScript.Arguments(0),False:Http.Send:Q=Split(Http.ResponseText,":")(1):WScript.Echo  
> Trim(Split(Q,"<")(0))>%G%  
> set ExtIP=
> for /f %%i in ('cscript //nologo %G% "%URL%"') do set "ExtIP=%%i"  
> del %G%
> if not defined ExtIP echo Externe IP konnte nicht ermittelt werden. & goto :eof
> 
> echo %Username% , %time:~0,2%:%time:~3,2%:%time:~6,2% , %ExtIP% >>"%Log%"  
> 
Grüße
bastla

genau sowas hab ich gesucht. Vielen vielen dank du warst meine rettung

mfg mesterdisast
Biber
Biber 29.07.2010 um 21:51:43 Uhr
Goto Top
Moin bastla,

noch ein winziger Verbesserungsvorschlag in Mesterdisasts Sinne.

Die letzen beiden Zeilen würde ich ändern von
 ....
if not defined ExtIP echo Externe IP konnte nicht ermittelt werden. & goto :eof 

echo %Username% , %time:~0,2%:%time:~3,2%:%time:~6,2% , %ExtIP% >>"%Log%"  

..in dieses:
 ....
if not defined ExtIP Set "ExtIP=Externe IP konnte nicht ermittelt werden."   

echo %Username% , %time:~0,2%:%time:~3,2%:%time:~6,2% , %ExtIP% >>"%Log%"  

Dann hat er zumindest die Anmeldezeiten und Usernamen statt gar nix plus die Info, dass die ExterneIp nicht ermittelt werden konnte.
Und der arme DAU-User hat nicht unverhofft eine Info "Externe IP konnte nicht ermittelt werden." nach dem Anschalten....
...der greift doch sonst sofort zum Telefon oder zum Underberg.

Andererseits... du hast ja das "pause" rausgenommen...da sieht eh keiner was face-wink

Grüße
Biber
bastla
bastla 29.07.2010 um 21:57:24 Uhr
Goto Top
@Biber
... der greift doch sonst sofort zum Telefon oder zum Underberg.
Wieso oder? face-wink
Dein Vorschlag ist definitiv die bessere Wahl. face-smile

Für die Optimierer unter uns: Die Zeile
if not defined ExtIP Set "ExtIP=Externe IP konnte nicht ermittelt werden."
könnte einfach als
Set "ExtIP=Externe IP konnte nicht ermittelt werden."
nach oben verschoben werden und die Zeile 7 (also: "set ExtIP=") ersetzen.

Grüße
bastla
ceng.de
ceng.de 29.07.2010 um 23:19:04 Uhr
Goto Top
Ein Tool:

http://lab1.de/Central/Software/Internet/Webmaster/Publish-My-IP/ PublishMyIP generiert TXT oder HTML Dateien Deiner externen DSL IP.

Das ganze in ein Batchfile bei Anmeldung des Users:
echo %username%>ichwilldichueberwachen.txt
Starte publishmyip.exe
Friemler
Friemler 15.09.2010, aktualisiert am 18.10.2012 um 18:43:30 Uhr
Goto Top
[OT]
Hallo Biber,

ist zwar schon 'ne Weile her, aber trotzdem: Das Skript von bastla aus diesem Thread funktioniert nur nach Änderung in tokens=3.

Grund:
bastla schrieb
"tokens=2 delims=<>"
Die Zeile, die er sucht, lautet
    <h1 class="ip">80.153.114.131</h1>
(man beachte die führenden Leerzeichen). Durch "delims=<>" zählen Leerzeichen nicht mehr als Trennzeichen, die führenden Leerzeichen sind also das erste Token, zweites Token ist "h1 class="ip"" und das dritte Token die IP-Adresse.

Deine direkt eingegebene Zeile enthält keine führenden Leerzeichen, funktioniert also mit "tokens=2".

Gruß
Friemler
[/OT]
bastla
bastla 15.09.2010 um 19:34:14 Uhr
Goto Top
[dito OT]
@Friemler
ist zwar schon 'ne Weile her
... ist genau der Punkt - im April 2008 sah die Zeile, die er suchte, noch so wie im damaligen Kommentar beschrieben aus ...

Grüße
bastla
[/dito OT]
Friemler
Friemler 15.09.2010 um 19:50:30 Uhr
Goto Top
[OT]
Hallo bastla,

Zitat von @bastla:
... ist genau der Punkt - im April 2008 sah die Zeile, die er suchte, noch so wie im damaligen Kommentar
beschrieben aus ...

hätte Dir so einen Schnitzer auch nicht zugetraut face-wink. Nix für ungut.

Gruß
Friemler
[/OT]
bastla
bastla 15.09.2010 um 19:59:32 Uhr
Goto Top
[OT]
Hallo Friemler!

Danke face-wink - ich hatte aber damals ohnehin schon angemerkt
... davon abhängig, dass die Struktur des HTML-Quellcodes der Website nicht wesentlich verändert wird ...
Die Version unterhalb (vom 29.07.2010, 21:28:07 Uhr) sollte etwas robuster sein, muss aber natürlich ebenfalls scheitern, wenn sich der Aufbau des HTML-Codes ändert (aber nicht an ein paar zusätzlichen Leerzeichen an Anfang oder Ende face-wink) ...

Grüße
bastla
[/OT]
anve
anve 17.07.2011 um 01:52:48 Uhr
Goto Top
Super Thread hier! Für die Eiligen unter uns

@echo off & setlocal 
set "Log=D:\Dein Pfad\IP.txt"  

set URL=http://checkip.dyndns.com/ 
set G=%temp%\GetHTML.vbs 
echo On Error Resume Next:Set Http=CreateObject("WinHttp.WinHttpRequest.5.1"):Http.Open "GET",WScript.Arguments(0),False:Http.Send:Q=Split(Http.ResponseText,":")(1):WScript.Echo Trim(Split(Q,"<")(0))>%G%   
Set "ExtIP=Externe IP konnte nicht ermittelt werden."    
for /f %%i in ('cscript //nologo %G% "%URL%"') do set "ExtIP=%%i"   
del %G%

echo %Username% , %time:~0,2%:%time:~3,2%:%time:~6,2% , %ExtIP% >>"%Log%"  

Jetzt nur mehr Pfad ändern und ab in die Aufgabenplanung (http://windows.microsoft.com/de-DE/windows-vista/Schedule-a-task)!