최근 허니팟 관련 스크립트를 작성하여 서버가 재부팅 되는 경우 서버 로그인 전에 자동으로 실행이 되도록 하기 위해 해당 스크립트를 서비스로 등록하는 작업을 진행하여 보았습니다.
1. Resource Kit Tools 설치
Windows Server 2003 용 : http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en
2. Batch 파일 작성
서비스로 등록시킬 스크립트 파일을 아래와 같이 작성한다.
C:\Python25\python.exe C:\Service\test.py > c:\Service\log.txt
3. 서비스 등록
아래 명령어로 서비스를 등록한다.
C:\Program Files\Windows Resource Kits\Tools\instsrv [서비스명] C:\Program Files\Windows Resource Kits\Tools\srvany.exe
4. 레지스트리 등록
아래 레지스트리 값으로 이동 하여 Key값 및 Value값을 추가 한다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services[서비스명]
서브 Key 추가 : Parameters
Parameters Key 하위에 아래와 같은 이름으로 Value(문자열값) 추가
Application = "C:\Service\start.bat"
AppDirectory = "C:\Service"
AppParameters = " "
5. 서비스 실행 계정 변경
[제어판] - [관리도구] - [서비스]로 이동하여 방금 생성한 서비스 실행 계정을 Administrator로 변경한다.
6. 배치파일 생성
마지막으로 start.bat 파일 구성에 대해 알아보겠습니다. 제가 작성한 배치파일 내용 입니다.
start.bat
start /D "c:\Sample Downloader\Service\" /B URL-always.bat
start /D "c:\Sample Downloader\Service\" /B URL-down.txt.bat
URL-always.bat
c:\python25\python.exe "c:\Sample Downloader\URL-always.py" 2> "C:\Logger\URL-always.log"
URL-down.txt.bat
c:\python25\python.exe "c:\Sample Downloader\URL-down.txt.py" 2> "C:\Logger\URL-down.txt.log"
이렇게 3개의 배치파일을 통해 서비스로 start.bat 파일을 실행하면 자동으로 원하는 Python 스크립트를 다수 실행하며 에러를 기록할 수 있습니다.