Wake On LAN op Synology NAS deel 2

Vandaag op twee manieren wake-on-lan aan de praat weten te krijgen op mijn NAS. Vanaf vandaag is het weer mogelijk om vanaf mijn NAS weer PC’s aan te zetten in mijn netwerk. In deze post beschrijf ik de manier die ik in het volg ga gebruiken omdat ik hiervoor poortje 22 niet open hoef te zetten voor een SSH verbinding. Het is mij namelijk gelukt met een PHP script en hiervoor hoef je dus alleen maar een Virtual Host aan te maken.

  1. Als eerste maken we dus een virtuele host aan in de DSM (Configuratie Scherm > Webservices > Tab: Web-applicaties > Knop: Virtuele host)
  2. Wanneer je dit klaar hebt dan maak je een index.php bestand aan en post je de volgende code in het bestand:

    <?php include(‘variables/variables.php’); ?>

    <?php
    flush();
    $port = 9;

    function WakeOnLan($addr, $mac, $socket_number)
    {
    $addr_byte = explode(‘:’, $mac);
    $hw_addr = ”;

    for($a=0; $a <6; $a++)
    $hw_addr .= chr(hexdec($addr_byte[$a]));

    $msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);

    for($a = 1; $a <= 16; $a++)
    $msg .= $hw_addr;

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

    if($s == false)
    {
    echo “Can’t create socket!<BR>\n”;
    echo “Error: ‘”.socket_last_error($s).”‘ – ” . socket_strerror(socket_last_error($s));
    return FALSE;
    }
    else
    {
    $opt_ret = socket_set_option($s, 1, 6, TRUE);

    if($opt_ret < 0)
    {
    echo “setsockopt() failed, error: ” . strerror($opt_ret) . “<BR>\n”;
    return FALSE;
    }

    if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number))
    {
    $content = bin2hex($msg);
    echo “Magic Packet Sent!<BR>\n”;
    echo “Data: <textarea readonly rows=\”1\” name=\”content\” cols=\””.strlen($content).”\”>”.$content.”</textarea><BR>\n”;
    echo “Port: “.$socket_number.”<br>\n”;
    echo “MAC: “.$_GET[‘wake_machine’].”<BR>\n”;
    socket_close($s);
    return TRUE;
    }
    else
    {
    echo “Magic Packet failed to send!<BR>”;
    return FALSE;
    }
    }
    }

    $result = null;

    if($_GET[“wake_machine”] != “”)
    $result = WakeOnLan(“##NETWERK##”, $_GET[“wake_machine”], $port);

    if($result != null)
    echo “<HR>WOL for “.$_GET[“wake_machine”].” was successful!<BR>\n”;

    ?>

    <title>Wake On LAN</title>

    <s:select label=”WakeOnLan”
    headerKey=”-1″ headerValue=”Select Machine”
    list=”machines”
    name=”WakeOnLan” /><form name=”WakeOnLan” method=”GET” action=”wakepage.php”>

    <td class=”WOL”>
    <label for=”WakeOnLan” class=”label”>
    Select a machine to wake:<br>
    </label>
    </td>
    <td>
    <select name=”wake_machine” id=”WakeOnLan”>
    <option value=”-1″>Select Machine</option>
    <option value=”##MACADDRESSPC##”##PCNAAM##</option>
    <option value=”##MACADDRESSPC##”##PCNAAM##</option>
    <input type=”submit” value=”Submit” />

    </form>
    </select>
    </td>

  3. Je dient nu alleen nog iets in het script aan te passen
    ##NETWERK## > Zet hier je netwerk in (voorbeeld: 192.168.1.255), laatste getal dient wel 255 te zijn.
    ##PCNAAM## > Maak hier de naam van de PC van
    ##MACADDRESSPC## > Maak hier het MAC Address van de PC van
  4. Navigeer nu naar de pagina en selecteer de PC die je wilt starten en druk op submit. (Je PC dient wel ingesteld te worden in de BIOS om op dit soort pakketjes te starten)

Wanneer je niet wilt dat iedereen op deze pagina kan komen dan kan je hier nog even kijken.

About Ronald

Ik ben de trotse bezitter van een DS1513+ en een DS114. De DS212+ die ik hiervoor had vind ik te langzaam om goed Wordpress te kunnen gebruiken. Inmiddels alweer een paar jaar ervaring! Heb je vragen? Stuur mij een berichtje via Hangouts

9 comments

  1. Hallo,

    Zou dit nog steeds moeten werken?

    Met vriendelijke groet Michel

    • Hoi Michel,

      Dit zal inderdaad nog steeds moeten werken. Het is namelijk gewoon een PHP script. Inmiddels is er ook een repo die een wake-on-lan pakket heeft. Weet niet of deze werkt, maar je krijgt er dan direct een grafische interface bij.

  2. Hoi Ronald,

    Bedankt voor je antwoord.

    Zie al wat er fout is gegaan, bij het kopiëren zijn de haakjes veranderd.
    Deze zijn aangepast en hij werkt nu perfect 🙂

    Kun je me vertellen waar ik het wake-on-lan pakketje kan vinden, dan kan ik even kijken wat beter/fijner werkt.

  3. Bovenstaande oplossing heeft altijd prima gewerkt, echter krijg ik sinds de laatste update ineens een Server 500 fout, iemand die hier op aanslaat?

    groeten,

    Marco

  4. Waar zitten de webservices in DSM 6?
    Werkt bovenstaande nog icm DSM 6?

  5. Ik krijg iedere keer de melding:
    Parse error: syntax error, unexpected ‘:’, expecting ‘,’ or ‘)’ in /volume1/web/index.php on line 9
    Regel 9 is:
    $addr_byte = explode(‘:’, $mac);
    Enig idee wat hierbij het probleem kan zijn?

Leave a Reply

Your email address will not be published. Required fields are marked *

*