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-ID: 155713

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

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

bastla
bastla 24.11.2010 um 19:55:34 Uhr
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
60730
60730 24.11.2010 um 20:18:24 Uhr
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ß
bastla
bastla 24.11.2010 um 21:28:35 Uhr
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
60730
60730 24.11.2010 um 22:23:43 Uhr
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
derauserbayerische
derauserbayerische 07.12.2010 um 12:07:16 Uhr
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
derauserbayerische
derauserbayerische 07.12.2010 um 12:11:53 Uhr
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ß
derauserbayerische
derauserbayerische 04.01.2011 um 11:23:59 Uhr
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ß
bastla
bastla 04.01.2011 um 11:45:55 Uhr
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
derauserbayerische
derauserbayerische 04.01.2011 um 15:24:18 Uhr
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"  
bastla
bastla 04.01.2011 um 15:32:29 Uhr
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
derauserbayerische
derauserbayerische 07.01.2011 um 16:27:23 Uhr
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
60730
60730 07.01.2011 um 16:56:09 Uhr
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ß
bastla
bastla 07.01.2011 um 16:58:51 Uhr
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]
60730
60730 07.01.2011 um 17:07:51 Uhr
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
bastla
bastla 07.01.2011 um 17:46:49 Uhr
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