2016/06/24(金) [n年前の日記]
#1 [pc] コマンドラインで使えるマジックパケット送信ツール
メインPC(Windows10 x64)から、コマンドラインで、WOL(Wake On Lan)のためのマジックパケット送信ができてないことに気がついたり。
一応、常用させてもらっているGUIツール、 _Wake on LAN for Windows からマジックパケットを送信すると、相手先のPCを起こすことができているのだけど。
しかし、コマンドラインツール相当で使える _MagicSend (MagicSend.exe)を使うと、何故か相手先が起こせない。ちなみに記述は以下の通り。
Windows7を使ってた頃は動作していた記憶があるのだけど…。Windows10にアップグレードしたから動かなくなったのだろうか。しかし、GUIツールから送ると起こせているのだから、NICのドライバが不具合を起こしてるとか、ドライバの設定がおかしいというわけではなさそう。
これがまたよく分からないことに、親父さんPC(Windows10 x64)上では MagicSend がフツーに使えている・相手先のPCを起こせているという…。どうやら自分のPC上でのみ不具合が起きてるらしい。何故。
とりあえず、他のコマンドラインツールもいくつか試してみることにした。
ちなみに、実験に使った相手先のPCは、先日 Lubuntu Linux 14.04 LTS をインストールしたPC。
ちなみに、例えば相手先のPCが 192.168.1.x のIPアドレスになるはずなら、wol 192.168.1.255 MACアドレス、と記述するらしい。
もしかすると指定の仕方が間違ってるだけかもしれないけれど、readme.txt に記述例が載ってない上に、/? をつけて実行しても今一つよく分からないヘルプ表示だったので少し困った。ただ、MagicSend と同じ状態になって動作していない可能性も否定できないなと。
一応、常用させてもらっているGUIツール、 _Wake on LAN for Windows からマジックパケットを送信すると、相手先のPCを起こすことができているのだけど。
しかし、コマンドラインツール相当で使える _MagicSend (MagicSend.exe)を使うと、何故か相手先が起こせない。ちなみに記述は以下の通り。
MagicSend.exe 00-1f-d0-cf-6c-96 MagicSend.exe 00-1F-D0-CF-6C-96
Windows7を使ってた頃は動作していた記憶があるのだけど…。Windows10にアップグレードしたから動かなくなったのだろうか。しかし、GUIツールから送ると起こせているのだから、NICのドライバが不具合を起こしてるとか、ドライバの設定がおかしいというわけではなさそう。
これがまたよく分からないことに、親父さんPC(Windows10 x64)上では MagicSend がフツーに使えている・相手先のPCを起こせているという…。どうやら自分のPC上でのみ不具合が起きてるらしい。何故。
とりあえず、他のコマンドラインツールもいくつか試してみることにした。
ちなみに、実験に使った相手先のPCは、先日 Lubuntu Linux 14.04 LTS をインストールしたPC。
◎ _ WWOL(Windows WOL) :
wol.exe 192.168.1.255 00-1F-D0-CF-6C-96これはOK。相手先が起きた。
ちなみに、例えば相手先のPCが 192.168.1.x のIPアドレスになるはずなら、wol 192.168.1.255 MACアドレス、と記述するらしい。
◎ _MagicPacket.zip (MagicPacket.exe) :
MagicPacket.exe 00-1F-D0-CF-6C-96 192.168.1.255これもOK。
◎ _wol (RubyGems) :
◎ _WOL Util :
MagicPacket.exe 001FD0CF6C96 MagicPacket.exe 00-1F-D0-CF-6C-96 MagicPacket.exe 00:1F:D0:CF:6C:96 MagicPacket.exe 001fd0cf6c96 MagicPacket.exe 00-1f-d0-cf-6c-96 MagicPacket.exe 00:1f:d0:cf:6c:96これはNG。相手先は起きてくれない。
もしかすると指定の仕方が間違ってるだけかもしれないけれど、readme.txt に記述例が載ってない上に、/? をつけて実行しても今一つよく分からないヘルプ表示だったので少し困った。ただ、MagicSend と同じ状態になって動作していない可能性も否定できないなと。
◎ そんなわけで原因は分からないけど。 :
とりあえず、wwol.exe を使わせてもらって凌ぐことにした。
一応、手元で使ってる vbs (tvtest_exec.vbs) も貼っておくです。
一応、手元で使ってる vbs (tvtest_exec.vbs) も貼っておくです。
' PT1機にMagic Packetを送信してからTVTestを起動する Option Explicit ' Const wol_exec = "MagicSend\MagicSend.exe 00-25-22-18-9E-51" Const wol_exec = "wwol\wol.exe 192.168.1.255 00-25-22-18-9E-51" Const hostip = "192.168.1.28" Const tvtest = "TVTest.exe" Dim wsh Set wsh = WScript.CreateObject("WScript.Shell") Dim res If fncPing(hostip) = False Then if MsgBox("チューナー機は起動していません。" & vbCr & "起動しますか?", _ vbYesNo + vbQuestion) = vbYes then wsh.Run wol_exec, 2, True res = wsh.Popup("チューナー機を起動しました。" _ & vbCr & "5秒ほどお待ちください。", 4) If res = vbOK Then WScript.Sleep(5000) End If end If Else res = wsh.Popup("チューナー機は既に起動しています。", 2) End If If fncPing(hostip) = False Then res = wsh.Popup("チューナー機が起動できませんでした。" _ & vbCr & "スクリプトを終了します。", 3) Set wsh = Nothing WScript.quit End If If MsgBox("TVTest を起動しますか?", vbYesNo + vbQuestion) = vbYes Then wsh.Run tvtest, , False End If Set wsh = Nothing WScript.quit ' ping送信をする関数。 ' 以下のページ内容をそのまま使わせてもらいました。 ' Systemメモメモ: VBScriptでPing ' http://happy44s.blogspot.jp/2012/03/vbscriptping.html Function fncPing(host) Dim objWMI Dim colItems Dim objItem Set objWMI = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMI.ExecQuery("select * from Win32_PingStatus where address ='" _ & host & "'") For Each objItem In colItems If objItem.StatusCode = 0 Then fncPing = True Else fncPing = False End If Next Set objItem = Nothing Set colItems = Nothing Set objWMI = Nothing End Function
[ ツッコむ ]
以上です。