SharedIT | 묻고 답하기(AMP)

배치 스크립트 작성 문의

안녕하세요 배치 스크립트 작성하면서 도저히 헷갈리는 부분이 나와 작성합니다.

secedit /export /cfg LocalSecurityPolicy.txt

type LocalSecurityPolicy.txt | find /i "EnableGuestAccount" > nul

if %ERRORLEVEL% EQU 0 (

echo [취약]

) else (

echo [양호]

)


위의 구문 입력 후 0이면 양호 1이면 취약이 나오도록 하고 싶은데

결과값이 0이든 1이든 무조건 같은 값만 지속적으로 출력해서 여쭤봅니다.


그리고 혹시 스크립트 작성 관련해서 보면 좋은 사이트나 유튜브 있을까요??

Tags : 태그가 없습니다.

3개의 답변이 있습니다.

rubyonrails
  0 추천 | 10달 전

secedit /export /cfg LocalSecurityPolicy.txt >nul & type LocalSecurityPolicy.txt | find /i "EnableGuestAccount = 0" >nul && echo [양호] || echo [취약]


이렇게도 작성할 수 있겠네요.

wansoo
  0 추천 | 10달 전

%ERRORLEVEL% 환경 변수는 마지막 실행한 명령의 실행 결과 값을 가지게 됩니다.


secedit /export /cfg LocalSecurityPolicy.txt

type LocalSecurityPolicy.txt | find /i "EnableGuestAccount" > nul

if %ERRORLEVEL% EQU 0 (

 echo [취약]

) else (

 echo [양호]

)


에서 

if %ERRORLEVEL% EQU 

명령의 마지막 실행 명령은 

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달 전

오 감사합니다 이렇게 적용하니까 원하는 값 도출되네요 !!

topkslee
  0 추천 | 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%값이 변동이 없습니다