唤醒有效的局域网脚本

Mic*_*ael 9 php wake-on-lan

在使用网络语言的局域网上是否有唤醒,最好使用php?还有一个有关如何让它工作的文档,如需要在服务器上启用的等等

Mez*_*Mez 10

function wol($broadcast, $mac)
{
    $hwaddr = pack('H*', preg_replace('/[^0-9a-fA-F]/', '', $mac));

    // Create Magic Packet
    $packet = sprintf(
        '%s%s',
        str_repeat(chr(255), 6),
        str_repeat($hwaddr, 16)
    );

    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

    if ($sock !== false) {
        $options = socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, true);

        if ($options !== false) {
            socket_sendto($sock, $packet, strlen($packet), 0, $broadcast, 7);
            socket_close($sock);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

应该工作 - 用广播IP地址和MAC地址来呼叫它


Rya*_*fer 5

我知道这是一个古老的问题,但这仍然是Google的第一个结果,因此,这是经过一些研究后我最终要做的事情:

先决条件:

  • 同一网络上的Linux机器
  • wakeonlan从系统的软件包管理器
        (即sudo apt-get install wakeonlan)安装软件包

现在脚本是如此简单:

<?php
    # replace with your target MAC address
    $mac = 'aa:bb:cc:11:22:33';

    exec("wakeonlan $mac");
?>
Run Code Online (Sandbox Code Playgroud)

 

希望能对某人有所帮助。

  • 如果您控制整个命令,@Artanis exec() 就完全没问题。当然,这一解决方案仅适用于拥有现有服务器的人,但最好共享信息而不是隐藏信息,因为它可能不适用于某个特定的人。 (3认同)
  • 只要 $mac 不包含用户输入,此操作就有效。谢谢! (2认同)