안녕하세요 배치 스크립트 작성하면서 도저히 헷갈리는 부분이 나와 작성합니다.
secedit /export /cfg LocalSecurityPolicy.txt
type LocalSecurityPolicy.txt | find /i "EnableGuestAccount" > nul
if %ERRORLEVEL% EQU 0 (
echo [취약]
) else (
echo [양호]
)
위의 구문 입력 후 0이면 양호 1이면 취약이 나오도록 하고 싶은데
결과값이 0이든 1이든 무조건 같은 값만 지속적으로 출력해서 여쭤봅니다.
그리고 혹시 스크립트 작성 관련해서 보면 좋은 사이트나 유튜브 있을까요??
해당 질문의 문제를 해결, 도움이 되는 선택된 답변이 있습니다.
작성된 다른 답변도 확인해 보시기 바랍니다..
3개의 답변이 있습니다.
secedit /export /cfg LocalSecurityPolicy.txt >nul & type LocalSecurityPolicy.txt | find /i "EnableGuestAccount = 0" >nul && echo [양호] || echo [취약]
이렇게도 작성할 수 있겠네요.
%ERRORLEVEL% 환경 변수는 마지막 실행한 명령의 실행 결과 값을 가지게 됩니다.
secedit /export /cfg LocalSecurityPolicy.txt
type LocalSecurityPolicy.txt | find /i "EnableGuestAccount" > nul
if %ERRORLEVEL% EQU 0 (
echo [취약]
) else (
echo [양호]
)
에서
if %ERRORLEVEL% EQU 0
명령의 마지막 실행 명령은
find /i "EnableGuestAccount"
가 되겠고요.
LocalSecurityPolicy.txt file에서 대소문자를 구분하지 않고, "EnableGuestAccount" 문자를 찾는 명령이되겠는데...
find 명령은 잦으려는 내용이 있으면 0값을, 없으면 1값을 errorlevel 환경 변수값을 돌려 보내 주게 됩니다.
아마도로컬 보안 정책의 EnableGuestAccount의 값이 0이면 [양호], 1이면 [취약]을 출력하려는 걸로 보여지는데...
find 문을
type LocalSecurityPolicy.txt | find /i "EnableGuestAccount = 0" > nul
으로 작성하시면 원하는 결과를 얻을 수 있겠습니다.
아니면, find 문을 한번 더 적어서...
type LocalSecurityPolicy.txt | find /i "EnableGuestAccount" | find "0" > nul
와 같이 적어도 되겠고요.
최종적으로 아래와 같이 배치 파일을 만들어 주면 원하는 결과를 얻을 수 있을 걸로 보여집니다.
==============
secedit /export /cfg LocalSecurityPolicy.txt
type LocalSecurityPolicy.txt | find /i "EnableGuestAccount" | find "0" > nul
if %ERRORLEVEL% EQU 0 (
echo [양호]
) else (
echo [취약]
)
유애나랑해 | 10달 전
오 감사합니다 이렇게 적용하니까 원하는 값 도출되네요 !!
@echo %ERRORLEVEL% 해서
%ERRORLEVEL%값의 변동이 있는지 체크해보세요.
그리고 if문 내에서 %ERRORLEVEL% 값이 문제가 있었던것 같은데요.
구문을 아래와 같이 한번 해보세요.
if %ERRORLEVEL% EQU 0 goto BAD
goto GOOD
:BAD
echo [취약]
goto QUIT
:GOOD
echo [양호]
goto QUIT
:QUIT
유애나랑해 | 10달 전
%ERRORLEVEL%값이 변동이 없습니다