특정 프로그램(코드)을 원하는 시간 동안 실행시키고자 하였습니다.
원래, 사용하는 컴퓨터에 WOL을 예약해두고 자동으로 부팅되어,
작업 스케줄러로 자동으로 프로그램이 실행되고,
자동으로 종료되도록 하였습니다. (shutdown /s)
그러나, 컴퓨터로 문서 작업을 할때마다 종료되는 시간이 되면 shutdown /a를 입력해주어야 하고
프로그램(코드)이 실행되고 있으니 걸리적거리기도 하고 컴퓨터를 종료해야 하면 다시 실행시켜 주어야 해서
중고 컴퓨터 1개를 구매하였습니다. (프로그램(코드)를 전용으로 사용할 컴퓨터)
그러나, WOL을 지원하는 메인보드인 것 같은데 1주일동안 시도해보았으나 LAN 포트는 점등되지 않았습니다.
그래서, 안쓰는 노트북을 WOL로 켜보기로 하였습니다.
단, 완전히 종료된 S5 상태에서는 WOL이 작동하지 않습니다.
단, 무선랜으로는 WOL이 작동하지 않습니다.
단, 유선랜이 연결되어 있어야 합니다.
단, 전원 케이블을 계속 꽂아 주어야 합니다.
1. 노트북 WOL 지원 확인
장치 관리자 - 네트워크 어댑터 - 해당 랜카드
장치 관리자에서 본인의 랜카드가 WOL을 지원하는지 확인하실 수 있습니다.
그림의 랜카드는 D0, D1, D2, D3에서 WOL을 지원하고 있습니다.
그래서, 장치가 S3(절전), S4(최대 절전), S5(종료)로 상태가 변할 때 D3 상태로 매핑될 수 있으며
D3 상태는 WOL을 지원하기 때문에 사용이 가능한 랜카드입니다.
하지만, 노트북의 경우 랜카드가 WOL을 지원하더라도 메인보드가 지원하지 않을 수 있으며
일반적으로 S5(종료) 상태에서는 노트북을 WOL로 부팅할 수 없습니다.
그렇기 때문에 S3(절전) 상태에서 WOL로 노트북을 부팅시켜 보겠습니다.
(사용한 노트북은 삼성의 NT500R5S-YD5S이며 절전모드에서 WOL로 부팅이 가능하였습니다.)
2. WOL 설정
매직패킷을 보내기 때문에,
매직 패킷, WOL, Wake on Lan, 웨이크 온과 관련된 속성은 모두 '사용'으로 변경해줍니다.
모든 설정이 완료되었습니다. 절전모드로 진입한 후 WOL 매직 패킷을 보내면 정상 부팅이 완료됩니다.
매직 패킷을 어플로 보내셔도 되고, iptime 공유기로 보내셔도 됩니다.
저는 특정 정해진 시간에 WOL 매직 패킷을 보내기 위해 시놀로지 NAS를 이용하여 WOL로 부팅하였습니다.
https://sjblog1.tistory.com/35
3. 절전모드 배치파일
%windir%\System32\rundll32.exe powrprof.dll SetSuspendState
메모장에 입력하고 .bat로 저장한 후 작업 스케줄로 자동화를 하였습니다.
파이썬으로 절전할 경우 아래 코드를 사용해주세요.
os.system('%windir%\System32\\rundll32.exe powrprof.dll SetSuspendState Hibernate off') # 절전모드
4. 문제 발생 (Troubleshooting)
4-1. 절전모드 로그인 화면 없애기
그러나, 문제가 발생하였습니다.
프로그램(코드) 전용으로 사용할 노트북인데,
절전모드로 진행시킨 뒤, WOL 매직패킷으로 다시 부팅시키는 것은 성공하였으나,
로그인 화면이 활성화되서 정상 부팅이 되지 않습니다.
암호를 설정해야 하는 불편함이 있지만, 어차피 자동화할 예정이므로 상관없습니다.
이렇게 하면 절전모드에서 빠져 나올 때 로그인 화면이 나타나지 않습니다.
4-2. 절전모드 모니터 화면이 안뜬다.
그러나, 문제가 발생하였습니다.
분명 정상적으로 부팅이 완료되었고, 로그인 화면도 나타나지 않았습니다.
단순히 모니터 화면이 안 뜨는 것이 아니라 켜졌지만,
마우스나 키보드를 입력하지 않을 경우 다시 절전모드로 들어갑니다.
(아무래도 비정상적으로 절전모드에서 빠져나왔을 때를 대비하여 입력이 없을 경우 다시 절전모드로 들어가는 것 같습니다.)
(참고로, WOL 매직 패킷을 보낸 후 약 2분간 입력값이 없으면 다시 절전모드로 진입하였습니다.)
해결은 간단했습니다. 마우스를 움직여 주면 된다.
하지만, 자동화를 목적으로 하기 때문에 WOL 매직패킷을 보내고, 마우스를 클릭해주는 코드를 작성하였습니다.
# 파이썬
import pyautogui
pyautogui.moveTo(1,1)
pyautogui.click()
# pyautogui.moveTo(1,1)
# 절대 위치 (1,1)로 마우스 포인터를 이동합니다.
# pyautogui.click()
# 마우스를 클릭합니다.
약 2분간 입력값이 없으면 다시 절전모드로 진입하기 때문에
WOL 매직 패킷을 보낸 후 노트북에 마우스 클릭 이벤트를 만들어 줍니다.
4-3. 절전모드가 절전모드가 아니었다.
%windir%\System32\rundll32.exe powrprof.dll SetSuspendState
배치파일을 이용하여 절전모드에 진입하였으나 절전모드가 아닌 최대 절전모드로 진입하였습니다.
시작 메뉴의 절전모드처럼 S3(절전모드)로 진입해야 하는데, 배치파일은 S4(최대 절전모드)로 진입하는 것입니다.
cmd (관리자 권한으로 실행)
powercfg /a
시스템에서 최대 절전 모드를 해제하겠습니다.
powercfg -hibernate off
이상으로 노트북에서, 절전모드로 진입 후 WOL 매직 패킷으로 부팅시켜 보았습니다.
궁금하신 점이나 Troubleshooting이 있으시면 댓글로 남겨주세요!
'컴퓨터 > 윈도우' 카테고리의 다른 글
Windows 10 (윈도우 10) USB로 설치하기 (0) | 2020.04.06 |
---|