맥에서는 이 기능을 사용하려면 System Preferences의 Energy Saver에서 켜 주면 된다.
동작방법은 네트웍으로 켜 주려고 하는 컴퓨터에 매직 패킷(magic packet)을 보내주면 된다. 매직 패킷의 포맷은 아주 단순하다. 패킷 내 어느곳에건 0xFF가 연속으로 6번 오고 그 바로 뒤에 켜주려는 컴퓨터의 mac address가 연속으로 16번 오면 된다. 즉 해당 컴퓨터의 mac address가 01:23:45:67:89:0a라고 하면 패킷 내에 아래의 내용이 들어 있으면 된다.
ff ff ff ff ff ff 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a 01 23 45 67 89 0a
다음은 파이선으로 작성한 매직패킷을 보내주는 프로그램의 예이다. (컴퓨터의 mac address는 01:23:45:67:89:0a 이고 이 프로그램을 실행할 컴퓨터(A)/켜 줄 컴퓨터(C) 모두 192.168.1 네트웍에 있는 경우...이 부분을 각자의 컴퓨터에 맞게 고쳐주면 된다.)
#!/usr/bin/env python같은 서브넷에 있는 컴퓨터에 매직 패킷을 보내는 가장 쉬운 방법은 broadcast를 사용하는 것이다. 포트 번호는 아무거나 사용해도 관계 없다. 다른 네트웍에 있는 컴퓨터도 매직패킷을 보내면 원격으로 켜 줄 수 있지만 요새는 대부분의 라우터/파이어월이 "subnet directed broadcast"를 막아놓고 있기 때문에 이 기능을 사용하려면 라우터/파이어월의 "subnet directed broadcast" 기능을 활성화 시키고 WoL에 사용할 포트를 열어줘야 한다. (이 경우도 아무 포트나 사용해도 관계 없다. 다만 외부에서 매직패킷을 보낼 때 열어준 포트를 사용하면 된다.)
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto('\xff'*6+'\x01\x23\x45\x67\x89\x0a'*16, ('192.168.1.255', 80))
맥 OS X에서 사용할 수 있는 GUI 소프트웨어는 여기서 다운받을 수 있다. (어플리케이션 뿐 아니고 Dashboard widget까지 포함되어 있다.)
윈도우에서 사용할 수 있는 GUI 소프트웨어는 여기서 다운받을 수 있다.
댓글 없음:
댓글 쓰기