Jestli jsem dobře pochopil původní dotaz, tak Vám jde o to, v určitou dobu zapnout počítač. O vypnutí se postará buďto cron, nebo přímo ten downloader po stažení.
takže: Zapnout počítač v určitý čas umí přímo BIOS. Tedy, pokud to není nějaký historický kousek.
Pokud chcete tak činit pomocí magic paketu, použijete na jiném počítači (ale na stejné sítí !!!) program wakeonlan.
Nainstaluje se: apt-get install wakeonlan
Jako parametr je třeba uvést MAC onoho zapínaného počítače např: wakeonlan 00:17:74:3A:6B:53
Podobná utilita je i pro Windows.
Nebo se také dá použít skript v PHP:
<?php
$mac = "FF-FF-FF-FF-FF-FF";
$ip = "255.255.255.255";
$port = 9;
if (isset ($_GET["mac"])) $mac = $_GET["mac"];
if (isset ($_GET["ip"])) $ip = $_GET["ip"];
if (isset ($_GET["port"])) $port = $_GET["port"];
function WakeOnLAN($mac, $ip, $port)
{
$mac = strtoupper($mac); // převedeme písmena v MAC adrese na velká
if(ereg("^([0-9|A-F]{2})[.|:|-]?([0-9|A-F]{2})[.|:|-]?([0-9|A-F]{2})[.|:|-]?([0-9|A-F]{2})[.|:|-]?([0-9|A-F]{2})[.|:|-]?([0-9|A-F]{2})$", $mac, $val))
$mac = chr(hexdec($val[1])).chr(hexdec($val[2])).chr(hexdec($val[3])).chr(hexdec($val[4])).chr(hexdec($val[5])).chr(hexdec($val[6])); // uloží MAC jako hexadecimální hodnoty
else return false; // MAC adresa je v neplatném tvaru
$msg = str_repeat(chr(255), 6); // úvodní synchronizační stream 6x FF
$msg .= str_repeat($mac, 16); // následovaný 16x zopakovanou MAC adresu cíle
if(($s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) == false) return false; // otevře UDP socket
if(socket_set_option($s, SOL_SOCKET, SO_BROADCAST, true) == false) return false; // nastaví jako broadcast
if(socket_sendto($s, $msg, strlen($msg), 0, $ip, $port) == false) return false; // odešle Magic Packet na danou IP a UDP port
socket_close($s); // uzavření socketu
return true;
}
$i = WakeOnLAN($mac, $ip, $port);
echo "<h1>WakeOnLAN (" . $mac . ", " . $ip . ", " . $port . ");</h1>\n";
echo "<h2>return value = " . $i . "<h2>\n";
?>
Volá se to například takto z browseru:
http://192.168.1.2/wake/wakeonlan.php?mac=00:0C:6E:54:2A:4D&ip=192.168.1.255
Nebo obdobně z příkazového řádku.
POZOR ! oba počítače musí být na stejné síti, protože magic paket je broadcast a ten se za normálních okolností přes router nedostane.