mieki256's diary



2016/06/24(金) [n年前の日記]

#1 [pc] コマンドラインで使えるマジックパケット送信ツール

メインPC(Windows10 x64)から、コマンドラインで、WOL(Wake On Lan)のためのマジックパケット送信ができてないことに気がついたり。

一応、常用させてもらっている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) :

_Wake On Lan についてのまとめ (リモートのマシンを起動) | TipsZone
wol -i 192.168.1.255 00:1F:D0:CF:6C:96
これもOK。

_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) も貼っておくです。
' 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

以上です。

過去ログ表示

Prev - 2016/06 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project