VLAN을 기반으로 서버에 연결하는 배치 파일
-
21-12-2019 - |
문제
이것은 VLAN을 기반으로 하는 특정 서버의 이미징을 위한 자동화 스크립트의 일부입니다.스크립트는 해당 IP와 해당 VLAN이 무엇인지 확인한 다음 이를 사용하여 특정 서버에 연결합니다.내 문제는 "현재 예상치 못한 경우" 오류가 발생한다는 것입니다.도와주세요.
:getvlan
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "IPv4 Address"') do set IP=%%a
for /f "tokens=3 delims=." %%j in ('echo %IP%') do set vlan=%%j
if %vlan% GEQ 100 (if %vlan% LEQ 119 (
set servernowack=server1
set seshtype=M
) if %vlan% GEQ 130 (if %vlan% LEQ 139 (
set servernowack=server2
set seshtype=D
) if %vlan% GEQ 140 (if %vlan% LEQ 149 (
set servernowack=server3
set seshtype=D
) if %vlan% GEQ 150 (if %vlan% LEQ 159 (
set servernowack=server4
set seshtype=M
) if %vlan% GEQ 160 (if %vlan% LEQ 169 (
set servernowack=server5
set seshtype=D
) else (
goto fail
)
goto getserverip
해결책
닫는 괄호보다 여는 괄호가 더 많습니다.그러므로 cmd.exe
각각의 블록을 결정하지 못함 if
배치 코드에서 해결하기 쉬운 간단한 구문 실수입니다.
@echo off
:getvlan
for /f "tokens=2 delims=:" %%a in ('%windir%\system32\ipconfig.exe ^| %windir%\system32\find.exe "IPv4 Address"') do set IP=%%a
for /f "tokens=3 delims=." %%j in ('echo %IP%') do set vlan=%%j
if %vlan% GEQ 100 (
if %vlan% LEQ 119 (
set servernowack=server1
set seshtype=M
goto getserverip
)
)
if %vlan% GEQ 130 (
if %vlan% LEQ 139 (
set servernowack=server2
set seshtype=D
goto getserverip
)
)
if %vlan% GEQ 140 (
if %vlan% LEQ 149 (
set servernowack=server3
set seshtype=D
goto getserverip
)
)
if %vlan% GEQ 150 (
if %vlan% LEQ 159 (
set servernowack=server4
set seshtype=M
goto getserverip
)
)
if %vlan% GEQ 160 (
if %vlan% LEQ 169 (
set servernowack=server5
set seshtype=D
goto getserverip
)
)
echo Error: Failed to determine vlan!
goto :EOF
:getserverip
제휴하지 않습니다 StackOverflow