Guten Tag.
Ich habe ein Batch-script geschrieben, welches aus einer Config Datei Netzwerke einliest und dann alle LAN-Verbindungen durchprobiert und wenn bei einer der Ping erfolgreich ist, weist das script auch der LAN-Verbindungen einen Namen zu(Welcher aus der Config Datei herausgenommen wird)
Vorgeschichte:
Arbeitskollegen müssen immer wieder auf einem neuen Server LAN-Verbindungen einrichten.
Dieser Server steht meist in etwa 4 verschiedenen LANs und bisher musste dies händisch eingerichtet und getestet werden.
Ein Batch script kann meines wissens nach auf jedem Windows Server ausgeführt werden.
Mein Batch script holt sich via IPConfig die Namen aller Ethernet Adapter und diese werden dann sofort weitergeleitet, wo dann mittels einer Schleife die Config Datei durchgegangen wird und jedes bisher noch nicht vergebene Netzwerk mit netsh dem jeweiligen Ethernet Adapter zugewiesen und getestet:
.) Wenn Erfolgreich:
Netzwerk wird in einer Variable gespeichert, damit keines 2-mal getestet wird, was wenig sinn hätte.
.) Wenn nicht Erfolgreich wird das nächste getestet
Ich habe das Script geschrieben und stehe derzeit vor einer Wand, weis nicht wirklich ob das funktioniert, bzw ob ich Fehler eingebaut habe.
Ich hoffe es gibt hier ein paar willige User die sich dieses Script durchschauen und es vielleicht verbessern bzw berichtigen können.
Informationen:
Es handelt sich um englisch sprachige Windows Server welche meist in 4 verschiedenen LANs stehen und die LAN-Verbindungen heißen am Anfang normalerweise so:
Local Area Connection 1
Local Area Connection 2
Local Area Connection 3
Local Area Connection 4
die Config Datei ist wie folgt aufgebaut:
<Neuer Name> <zu vergebene IP> <Subnet maske> <IP für Ping test>
z.B.:
LAN-01 10.48.222.34 255.255.248.0 10.48.222.1
LAN-02 124.23.12.56 255.255.248.0 124.23.12.1
Ich bedanke mich schon mal im vorraus für alle die sich es angetan haben mein Script zu lesen, bzw es versucht haben.
Ich will keine Kritik an der Schreibweise, war meines Denkens nach so notwendig aufgrund der vielen Variablen die ich verwenden muss, ich suche verbesserungen, Tests, oder ähnliches.
MFG,
Doomt
Ich habe ein Batch-script geschrieben, welches aus einer Config Datei Netzwerke einliest und dann alle LAN-Verbindungen durchprobiert und wenn bei einer der Ping erfolgreich ist, weist das script auch der LAN-Verbindungen einen Namen zu(Welcher aus der Config Datei herausgenommen wird)
Vorgeschichte:
Arbeitskollegen müssen immer wieder auf einem neuen Server LAN-Verbindungen einrichten.
Dieser Server steht meist in etwa 4 verschiedenen LANs und bisher musste dies händisch eingerichtet und getestet werden.
Ein Batch script kann meines wissens nach auf jedem Windows Server ausgeführt werden.
Mein Batch script holt sich via IPConfig die Namen aller Ethernet Adapter und diese werden dann sofort weitergeleitet, wo dann mittels einer Schleife die Config Datei durchgegangen wird und jedes bisher noch nicht vergebene Netzwerk mit netsh dem jeweiligen Ethernet Adapter zugewiesen und getestet:
.) Wenn Erfolgreich:
Netzwerk wird in einer Variable gespeichert, damit keines 2-mal getestet wird, was wenig sinn hätte.
.) Wenn nicht Erfolgreich wird das nächste getestet
Ich habe das Script geschrieben und stehe derzeit vor einer Wand, weis nicht wirklich ob das funktioniert, bzw ob ich Fehler eingebaut habe.
Ich hoffe es gibt hier ein paar willige User die sich dieses Script durchschauen und es vielleicht verbessern bzw berichtigen können.
Informationen:
Es handelt sich um englisch sprachige Windows Server welche meist in 4 verschiedenen LANs stehen und die LAN-Verbindungen heißen am Anfang normalerweise so:
Local Area Connection 1
Local Area Connection 2
Local Area Connection 3
Local Area Connection 4
die Config Datei ist wie folgt aufgebaut:
<Neuer Name> <zu vergebene IP> <Subnet maske> <IP für Ping test>
z.B.:
LAN-01 10.48.222.34 255.255.248.0 10.48.222.1
LAN-02 124.23.12.56 255.255.248.0 124.23.12.1
Code:
@echo off
set TMPIPCONFIGFILE=%TEMP%\~ipconfig%RANDOM%.txt
set Connections=.
set finishLANs=.
set TEMPPINGFILE=$TEMP%\~ping%RANDOM%.txt
set INPUTFILE="conffile ip Config.txt"
type Nul > %TMPIPCONFIGFILE%
type Nul > %TEMPPINGFILE%
ipconfig | findstr /C:"Ethernet Adapter" /i > %TMPIPCONFIGFILE%
for /F "usebackq tokens=1-6" %%a in (%TMPIPCONFIGFILE%) do (
if not "%%c %%d %%e %%f"==" " (
call :FirstSubRoutine %%c %%d %%e %%f
)
)
del %TMPIPCONFIGFILE% > Nul
del %TEMPPINGFILE% > Nul
goto :EOF
:FirstSubRoutine
set Adapter="%1 %2 %3 %4"
call :SecondSubRoutine %Adapter%
goto :EOF
:SecondSubRoutine
set con=%1
for /F "usebackq tokens=1-4" %%a in (%INPUTFILE%) do (
call :ThirdSubRoutine %con% %%a %%b %%c %%d
)
goto :EOF
:ThirdSubRoutine
set dName=%1
set dNewName=%2
set dIP=%3
set dSubnet=%4
set dGate=%5
set vorhanden=
for %%a in (%finishLANs:;= %) do (if "%%a"=="%dNewName%" set vorhanden="1" )
if defined vorhanden (
set _break=
call :pingTest %dname% %dNewName% %dIP% %dSubnet% %dGate%
if defined _break (
goto :EOF
)
)
goto :EOF
:pingTest
set Name=%1
set Name=%Name%##
set Name=%Name: "##="##%
set Name=%Name: "##="##%
set Name=%Name: "##="##%
set Name=%Name: "##="##%
set Name=%Name: "##="##%
set Name=%Name:"##="##%
set Name=%Name:~0,-1%"
set newname=%2
set IP=%3
set Subnet=%4
set PINGIPADDRESS=%5
set _ERG=
set vorhanden=
for %%a in (%Connections:;= %) do ( if "%%a"=="%Name%" set vorhanden="1" )
if defined vorhanden (
goto :EOF
)
echo Interface=%Name% newname="%newname%" IP=%IP% SUBNET=%SUBNET%
netsh interface ip set address name=%Name% static %IP% %SUBNET% > Nul
if ERRORLEVEL 1 (
goto :EOF
)
echo ping -n 5 %PINGIPADDRESS%
ping -n 5 %PINGIPADDRESS% > %TMPPINGFILE%
for /F "usebackq tokens=1-6" %%a in (%TEMPPINGFILE%) do (
if "%%a"=="Reply" (
if "%%b"=="from" (
if "%%c"=="%PINGIPADDRESS%:" (
set _ERG="1"
)
)
)
)
if defined _ERG (
echo Ergebnis: ping erfolgreich
netsh interface set interface name=%Name% newname=%newname% > Nul
set finishLANs=%finishLANs%;%newname%
set Connections=%Connections%;%Name%
set _break=now
)
if not defined _ERG (
echo Ergebnis: Ping fehlgeschlagen
netsh interface ip set address name=%Name% source=dhcp
)
goto :EOF
Ich bedanke mich schon mal im vorraus für alle die sich es angetan haben mein Script zu lesen, bzw es versucht haben.
Ich will keine Kritik an der Schreibweise, war meines Denkens nach so notwendig aufgrund der vielen Variablen die ich verwenden muss, ich suche verbesserungen, Tests, oder ähnliches.
MFG,
Doomt