derauserbayerische
Goto Top

PC Name in der Liste dann Update und IP Abfrage

Hi,

Ich Plane zurzeit ein Script das als ersten den PC Namen mit einer TXT vergleichen wenn vorhanden dann soll die IP Adresse Ausgewertet werden und wenn am dritten Oktett eine gewisse Nummer erfolgt soll ein diese Daten Kopieren

Hintergrund:
mehre File Server an unterschiedlichen Standorten daher muss eine IP abfrage kommen von welchem Server die Daten Kopiert werden
die PC Name Abfrage wird benötigt da sich diese Clints immer wieder ändern und nicht alle die Daten Kopieren sollen

Jemand Erfahrung mit so was bzw. vielleicht schon ein Skript oder kann mir helfen ?

Gruß

Content-Key: 155713

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

Printed on: April 25, 2024 at 02:04 o'clock

Member: bastla
bastla Nov 24, 2010 at 18:55:34 (UTC)
Goto Top
Hallo derauserbayerische!

Passend zu den von Dir beschriebenen Fragmenten:
Verwende "findstr" zum Vergleichen,
ermittle die IP mit "ipconfig",
zerlege sie mit "for /f" (mit passenden Delimitern wird Dich Token Nr 5 interessieren),
prüfe mit "if" und
kopiere mit "copy" / "xcopy" ...

Grüße
bastla
Mitglied: 60730
60730 Nov 24, 2010 at 19:18:24 (UTC)
Goto Top
moin,

'türlich haben wir sowas schon face-wink

Alternativ würde ich aber den ganzen Killefitz nicht veranstalten und das Script auf ein minimum reduzieren.

if "%logonserver%"=="\\serverstandort1" set bla=blub  
if "%logonserver%"=="\\serverstandort2" set bla=blub²  
@bastla. klar, aber bei Ipconfig (hatten wir ja schon mehrmals) kommen "alle" Ips raus, die die Kiste haben kann.
Ping -n 1 %computername% |find "192.168.111" usw usf

Gruß
Member: bastla
bastla Nov 24, 2010 at 20:28:35 (UTC)
Goto Top
@t-mo
aber bei Ipconfig (hatten wir ja schon mehrmals) kommen "alle" Ips raus, die die Kiste haben kann.
... und vielleicht ist ja eine dabei, die passt (muss ja ohnehin gegengecheckt werden) - und wenn nicht, dann nicht ... face-wink

Grüße
bastla
Mitglied: 60730
60730 Nov 24, 2010 at 21:23:43 (UTC)
Goto Top
@bastla:
... und vielleicht ist ja eine dabei, die passt (muss ja ohnehin gegengecheckt werden) - und wenn nicht, dann nicht ... face-wink

..."naja" angenommen ich hab einen aktiven Software VPN Tunnel auf dem Notebook, der liefert mir natürlich eine valide Ip vom Standort x.
Obwohl ich in einem ganz anderen "Standort" sitze - das Problem hat man mit dem Logonserver nicht (ok-beim VPN Router, der den Tunnel schon vor dem anmelden offen hat - wärs Jacke wie Hose)

Grüße
bastla

Retour face-wink
Member: derauserbayerische
derauserbayerische Dec 07, 2010 at 11:07:16 (UTC)
Goto Top
hi,
so jetzt habe ich wieder etwas zeit für das projekt face-wink

leider hat nicht jeder standort einen logonserver
sonder nur einen NAS Server

daher wäre eine IP auswertung doch erheblich einfacher
wobei auch hier das Problem der VPN User wäre diese eine IP zugewisen bekommen die nicht die normale lokale wäre
Member: derauserbayerische
derauserbayerische Dec 07, 2010 at 11:11:53 (UTC)
Goto Top
diese problem trifft bei uns zum glück nicht zu

da die User an den Ausenstandorten sich nicht per VPN einlogen müssen
sonder nur von Zuhause und in dem fall gibt es eine VPN IP die zum Hauptstandort läuft

gruß
Member: derauserbayerische
derauserbayerische Jan 04, 2011 at 10:23:59 (UTC)
Goto Top
So wollte mal kurz eine meiner Lösungen Zeigen


 FINDSTR /I /x %COMPUTERNAME% "update.txt"  
IF errorlevel == 0 GOTO ok


so die Auswertung ist ja noch ganz einfach
um dann die IP auszuwerten
mache ich ein Ping auf mich selber und zähle dann die oktett durch

for /f "tokens=2 Delims= skip=1" %%i in ('ping -n 1 %computername% -4') do (for /f "tokens=3 delims=." %%j in ('echo %%i') do set Oktett=%%j)  


gruß
Member: bastla
bastla Jan 04, 2011 at 10:45:55 (UTC)
Goto Top
Hallo derauserbayerische!

Das ließe sich beides noch etwas komprimierter schreiben:
FINDSTR /I /x %COMPUTERNAME% "update.txt" && goto :ok
bzw
for /f "tokens=2 Delims=" %%i in ('ping -n 1 %computername% -4') do (for /f "tokens=3 delims=." %%j in ("%%i") do set Oktett=%%j)
wobei es sicherer wäre, %Oktett% vorweg zu löschen und danach ev auf die Existenz der Variablen zu prüfen, also etwa
set "Oktett="  
for /f "tokens=2 Delims=" %%i in ('ping -n 1 %computername% -4') do (for /f "tokens=3 delims=." %%j in ("%%i") do set Oktett=%%j)  
if not defined Oktett (
    echo Keine IP gefunden!
    goto :KeineIP
)
Grüße
bastla
Member: derauserbayerische
derauserbayerische Jan 04, 2011 at 14:24:18 (UTC)
Goto Top
die Idee mit der Abfrage ist sehr gut ...

bin gerade am schauen wie ich es hinbekommen das der PC sich selber wenn vorhanden aus der TXT Löschen
das ist schein bar nicht so leicht face-sad

ohne zweite TXT ist das garnicht möglich oder ??

das einfach Löschen wenn vorhanden klappt aber dann ist die ganze TXT weg face-sad
for /f "delims=" %%A in ('Findstr /i /M "%computername%" C:\TEMP\update.txt') Do Del "%%A"  
Member: bastla
bastla Jan 04, 2011 at 14:32:29 (UTC)
Goto Top
Hallo derauserbaeyerische!
ohne zweite TXT ist das garnicht möglich oder ??
Richtig; sollte sich etwa so realisieren lassen:
set "Liste=C:\TEMP\update.txt"  
set "ListeTemp=%temp%\update.txt"  

move "%Liste%" "%ListeTemp%"  
findstr /i /x /v "%username%" "%ListeTemp%">"%Liste%"  
Grüße
bastla
Member: derauserbayerische
derauserbayerische Jan 07, 2011 at 15:27:23 (UTC)
Goto Top
hmm sehr gut ... aber irgenwie klappt es nicht
nur wen die txt leer ist sagt er kein update sonst ist angeblich immer vorhanden

selbst wenn ich die ListeTemp=%temp%\update.txt vorher noch mal löschen lasse

@ECHO OFF

DEL /F "%temp%\update.txt"  

set "Liste=C:\TEMP\update.txt"   
set "ListeTemp=%temp%\update.txt"   

move "%Liste%" "%ListeTemp%"   
findstr /i /x /v "%COMPUTERNAME%" "%ListeTemp%">"%Liste%" && goto :ok  

:nup
ECHO.
ECHO kein Update
ECHO.
PAUSE

:ok
ECHO.
ECHO Update vorhanden
ECHO. 
PAUSE
Mitglied: 60730
60730 Jan 07, 2011 at 15:56:09 (UTC)
Goto Top
moin,

naja das ist ja auch logisch...

findstr /v "bla" liefert ja immer (ausser die Datei ist nicht vorhanden) einen Errorlevel0 zurück, denn er findet dann ja auch was....
ungetestet
rem @ECHO OFF

set "Liste=C:\TEMP\update.txt"   
set "ListeTemp=%temp%\update.txt"   

findstr /i "%COMPUTERNAME%" "%Liste%" && move "%Liste%" "%ListeTemp%"  
if exist %ListeTemp% findstr /i /v "%COMPUTERNAME%" "%ListeTemp%">"%Liste%" && goto :ok  

:nup
ECHO.
ECHO kein Update
ECHO.
PAUSE

:ok
ECHO.
ECHO Update vorhanden
ECHO. 
PAUSE
DEL /F "%temp%\update.txt"  

Gruß
Member: bastla
bastla Jan 07, 2011 at 15:58:51 (UTC)
Goto Top
Hallo derauserbayerische!

Es ging hier doch nur um das Entfernen aus der Liste, und nicht um die Abfrage, ob noch enthalten ...

[Edit]
@t-mo
einacher:
findstr /i /x "%COMPUTERNAME%" "%Liste%" >nul && (  
    move "%Liste%" "%ListeTemp%"   
    findstr /i /x /v "%COMPUTERNAME%" "%ListeTemp%">"%Liste%"  
    goto :ok
)
[/Edit]

Grüße
bastla

[Edit2] Den von T-Mo dankenswerter Weise face-smile gespendeten Weihnachtsgansteil an seinen Platz gebracht [/Edit2]
Mitglied: 60730
60730 Jan 07, 2011 at 16:07:51 (UTC)
Goto Top
Moin Bastla,

ich hab mal nur gedacht und nicht nachgedacht, dafür aber zur Abwechslung mal "getestet"

Geht bestimmt noch viel einfacher, aber der Bock lag ja an einer Nummer, die immer 0 auswürfelt.
Das wollte ich doch nur aufzeigen.

Ich kaufe mir (hab ich schon und) dir ein paar Füße für die nachträgliche Weihnachtsgans face-wink ("%Liste% >nul) face-wink
Zitat von @bastla:
Hallo derauserbayerische!

Es ging hier doch nur um das Entfernen aus der Liste, und nicht um die Abfrage, ob noch enthalten ...

[Edit]
@t-mo
einfacher:
findstr /i /x "%COMPUTERNAME%" "%Liste%" >nul && (  
    move "%Liste%" "%ListeTemp%"   
    findstr /i /x /v "%COMPUTERNAME%" "%ListeTemp%">"%Liste%"  
    goto :ok
 )
[/Edit]

Grüße
bastla

retour
Member: bastla
bastla Jan 07, 2011 at 16:46:49 (UTC)
Goto Top
... obwohl: Eigentlich müsste das ja insgesamt eher so ausehen:
findstr /i /x "%COMPUTERNAME%" "%Liste%" >nul || goto :ok  

:nup
ECHO.
ECHO Führe Update durch ...
ECHO.

REM Update

REM Rechner aus der Liste entfernen
move "%Liste%" "%ListeTemp%"   
findstr /i /x /v "%COMPUTERNAME%" "%ListeTemp%">"%Liste%"  

goto :Ende

:ok
ECHO.
ECHO Update vorhanden
ECHO. 

:Ende
PAUSE
Grüße
bastla