2010年3月20日土曜日

WakeOnLan を command line から実行したい

[したいこと・しりたいこと・目標]


Mac OSX で WakeOnLanをコマンドラインから実行したい
Mac OSX で wol を command line から実行したい
Mac OSX の perl で WakeOnLan を実行したい
Mac OSX の python で WakeOnLan を実行したい
Mac OSX で WakeOnLan を実行する scriptを作る

[環境]


Ubuntu Jaunty Jackalope 9.04
Mac OS X 10. 6 Snow Leopard
perl 5.10.0
Python 2.6.1

target_ip_address : 192.168.0.x
mac_address : 00:01:02:03:04:05
udp_port : 7




[したこと]



(01)perl version

wol.plという名前でファイル作成
以下内容

#!/usr/bin/perl -w
use IO::Socket;
use strict;

my $ip = "192.168.0.x";

my $mac = "\x00\x01\x02\x03\x04\x05";

my $sock = IO::Socket::INET->new(
Proto    => 'udp',
PeerPort => 7,
PeerAddr => $ip,
) or die "Could not create socket: $!\n";

my $secretPacket = "\xFF\xFF\xFF\xFF\xFF\xFF";
for (my $i =0; $i < 16; ++$i ) {
$secretPacket = $secretPacket.$mac;
}
$sock->send($secretPacket) or die "Send error: $!\n";


実行権限付与
$ chmod u+x wol.pl

実行
$ ./wol.pl

(02)python version

wol.pyという名前でファイル作成
以下内容

#!/usr/bin/env python
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto('\xff'*6+'\x00\x01\x02\x03\x04\x05'*16, ('192.168.0.x', 7))

実行権限付与
$ chmod u+x wol.py

実行
$ ./wol.pl




[その他]


WakeOnLan という下記のGUIプログラムは使わない。なぜならば、コマンドラインからやりたいから。
WakeOnLan
http://www.readpixel.com/wakeonlan/

[参考]


Wake a sleeping Mac from the network - Mac OS X Hints
http://www.macosxhints.com/article.php?story=20020220095929695

Python Wake-on-Lan script ( WOL your PC ) - XBMC Community Forum
http://forum.xbmc.org/showthread.php?t=3450


Wake PC over the internet - aka. "Wake On WAN"
http://geekswithblogs.net/luskan/archive/2008/03/12/120504.aspx

0 コメント: