n-Archives.net

Wake on LANのマジックパケットを送信するWindowsコマンド

目次


マジックパケットを送信できるWindowsコマンドを作りました

PCを遠隔から起動するためには、マジックパケットをPCに送信しWake on Lan(WOL)のしくみで起動させます。世の中には、マジックパケットを送信するGUIツールはいろいろありますが、PCをWake on LANで時刻起動させたい場合など、バッチファイルやタスクスケジューラなどから実行できるコマンドを使ってマジックパケットを送信させたいというケースもたくさんあるようです。

 

今回 nWOLというマジックパケットを送信できるGUIツールの補助的な機能として、nWOLc.exeというコマンドを作ったのですが、これを使うとnWOLを使っていなくても、(nWOLc.exe単体で)マジックパケットを送信できるようになりますので、ご紹介します。

マジックパケット送信以外にもいくつかの処理が可能です。以下の処理が実行できます。

  • マジックパケットを送信する
  • ホストの起動状態を確認する
  • ホストが起動状態になるまで待機する

 

nWOLはnWOLのホームページからダウンロードできます。インストーラでnWOLをインストールすると、C:\Program Files\nWOL というフォルダに、nWOLc.exe がインストールされます。nWOLをインストールしたくない方は、zip 版をダウンロードしてください。

 

nWOLc.exeの詳細なコマンド解説は以下のページにありますのでご参照ください。

参考リンク:nWOLc マニュアル

 

nWOLcのコマンドオプション

nWOLc.exe で実行できるオプションは以下の通りとなっています。

nWOLc: nWOL console command   (Version 1.5.25)

-l ["regex"]         List all or regex-matched hosts
-a                   Send magic packet to all WOL capable hosts
-h hostnames...      Send magic packet to specified WOL capable hosts
-r "regex"           Send magic packet to regex-matched WOL capable hosts
-m mac [ip [mask]]   Send magic packet
-p hostname          Check status of a host(or IP) (retcode=0 when online)
-w hostname waitsec  Wait for a host(or IP) to come online (retcode=0 when online)
-t sec               Set ping timeout in seconds for -p or -w (default=1)
-i                   Ignore case when -l or -r
-n                   No output messages
-?                   Help

ホスト名を指定して処理を実行する場合などは nWOLの設定がされていなければならないのですが、-m, -p, -wについては、IPアドレス直接指定であれば、nWOLの設定がされていなくても、nWOLc.exe 単独で実行可能です。それぞれ以下の処理が可能です。

  • -m :マジックパケットを送信する
  • -p :ホストの起動状態を確認する
  • -w :ホストが起動状態になるまで待機する

それぞれの実行方法について、説明していきたいと思います。

 

-m オプションでマジックパケットを送信する方法

-m オプションは "-m mac [ip [mask]]" のように指定します。それぞれ、MACアドレス、IPアドレス、ネットマスクを指定します。

実際に -m オプションを使ってマジックパケットを送信するコマンド例を以下に示します。

コマンド例 説明
nwolc -m abcdef123456
同一LAN内に存在し、MACアドレスが abcdef123456 であるホストにマジックパケットを送信する。
nwolc -m abcdef123456 192.168.1.20
同一LAN内に存在し、MACアドレスが abcdef123456、IPアドレスが192.168.1.20 であるホストにマジックパケットを送信する。
nwolc -m abcdef123456 192.168.10.20 255.255.255.0
nwolc -m abcdef123456 192.168.10.20 24
nwolc -m abcdef123456 192.168.10.20/24
ルータを経由した先に存在し、MACアドレスが abcdef123456、IPアドレスが192.168.10.20、ネットマスクが 255.255.255.0 (24bit) であるホストにマジックパケットを送信する。
nwolc -m abcdef123456 192.168.10.255
ルータを経由した先に存在し、MACアドレスが abcdef123456、ディレクティッドブロードキャストアドレスが192.168.10.255 であるホストにマジックパケットを送信する。
  • 同一LAN内のホストに対しては、MACアドレスのみ指定すれば送信できます。
  • MACアドレスのみ指定した場合、接続されている全てのネットワークIFからマジックパケットが送信されます。複数のネットワークIFが接続されているが、該当するネットワークIFからのみパケットを送信したい場合は、IPアドレスを指定してください。(ネットマスクは指定する必要はありません。)
  • ルータを経由した先のホストにマジックパケットを送信する場合は、送信先ホストのIPアドレスとネットマスクを指定するか、送信先ホストの存在するNWのディレクティッドブロードキャストアドレスを指定する必要があります。
  • ディレクテッドブロードキャストアドレスとは、IPアドレスのホスト部の全てのビットを1にしたアドレスです。
    参考記事:「ブロードキャストアドレスの種類を知る 」 (atmarkIT記事)

 

-p オプションでホストの起動状態を調べる方法

-p オプションは "-p hostname" のように指定します。hostname にはIPアドレスを指定できます。

-p オプションのコマンド例を以下に示します。

コマンド例 説明
nwolc -p 192.168.1.6
192.168.1.6 の起動状態を調べる。
nwolc -p 192.168.1.6 -t 3
192.168.1.6 の起動状態を調べる。pingのタイムアウトを3秒に設定する。
  • 起動状態であった場合、戻り値は 0 となります。それ以外の場合は戻り値は 1 となります。
  • ping のタイムアウトはデフォルトで1秒となっています。

※参考:ホストの起動状態はpingコマンドでも確認できますが、Windowsのpingコマンドの場合、「宛先に到達できない(送信先アドレスへのルートがない)場合」についても、戻り値が 0 (正常)となります。nwolc -p では、正常に応答が返ってきた場合以外は全て戻り値が 1 となります。

 

-w オプションでホストが起動状態になるまで待機する方法

-w は、指定されたホストにpingを継続的に送信し、正常な応答があるまで繰り返します。指定されたホストが起動状態になるのを待機します。

-w オプションは "-w hostname waitsec" のように指定します。waitsecには待機する最大秒数を設定します。

コマンド例 説明
nwolc -w 192.168.1.6
192.168.1.6 が起動するまで永遠に待機する。
nwolc -w 192.168.1.6 60
192.168.1.6 が起動するまで最大60秒間待機する。
nwolc -w 192.168.1.6 60 -t 3
192.168.1.6 が起動するまで最大60秒間待機する。pingのタイムアウトを3秒に設定する。
  • 起動状態になった場合、戻り値は 0 となります。それ以外の場合(待機時間が過ぎた場合など)は 1 となります。

 

 

Related Articles

 

コメントをお送りください
お名前:
コメント:
コメントの公開:



管理者より個人的に返信をご希望の方は、コメント中に必ずメールアドレスを記載してください。記載がないと返信できませんのでご注意ください。

If you want personal response from the author, please do not forget to write your email address in the comment. Otherwise, the author can not reply.

投稿されたコメントは手動で処理されるため、記事として登録されるまで1日程度かかります。

Submitted comments will be processed manually. So, please understand it will take about a day to publish your comment.