Wake on LAN - Zapínání počítačů po síti
Jak přes běžnou drátovou síť zapnout vypnutý nebo uspaný počítač pomocí WakeOnLan, tedy zasláním magického paketu.
Co je potřeba
- Podporu WakeOnLan hardwaru (novější stolní počítače obvykle podporují)
- Zapnutou podporu WakeOnLan v BIOSu
- MAC adresu (fyzickou adresu) síťové karty počítače
- Případně IP adresu, pokud zapínající a zapínaný počítač leží v různých podsítích
- Na softwaru zapínaného počítače nezáleží, vše leží na hardwaru
Hardware
Aby WakeOnLan mohlo fungovat, musí po vypnutí počítače zůstat síťová karta zapnutá. Poznat lze podle kontrolek u konektoru - pokud svítí i když je počítač vypnutý, mělo by to fungovat. Nastavit by to mělo jít v Setupu v části věnované Power managementu. Například vedle časovaného zapínání, nebo zapínání počítače klávesnicí. Je zde sice také položka External modem, to co ale hledáme se (minimálně tam kde jsem to zkoušel) skrývá pod PCIe.
Aby magický paket dorazil do správné síťové karty, musí být adresován patřičné MAC adrese. Ta stačí aby paket putoval skrz switch, ale ne skrz router - aby paket prošel skrz router, musí být opatřený patřičnou IP adresou. Ta nemusí náležet přímo samotnému počítači, který ji v tu chvíli ostatně ani nemusí mít, ale musí ležet v dané podsíti. Pokud paket vysíláme ze stejné podsítě, můžeme místo IP adresy použít adresu 255.255.255.255 - paket tak bude doručen všem počítačům v místní podsíti, ale bude platit pouze pro ten s danou MAC adresou.
Odeslání z Linuxu
Za nejstandardnější způsob se může považovat příkazwakeonlan
ze stejnojmenného balíku. Nejobvyklejší použití:
wakeonlan 00:12:4G:SF:12:13Pokud počítač leží v jiné podsíti, musíme uvést i IP adresu, která paket dovede do správné podsítě: (Můžeme použít oběžník dané podsítě, nebo přímo IP počítače, teoreticky by měla stačit libovolná IP v dané podsíti, zajímají se o ni totiž pouze routery, protože paket přijímá samotná síťová karta, která IP adresu nepoužívá)
wakeonlan -i 192.168.5.255 00:12:4G:SF:12:13
Odeslání z PHP (neotestováno)
function WakeOnLan($mac,$addr="255.255.255.255",$socket_number=9){ $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; if(!socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)){ echo "Error creating socket: ".socket_strerror(socket_last_error($s)); return false; }else{ if(($opt_ret = socket_set_option($s, 1, 6, TRUE))<0){ echo "setsockopt() failed, error: " . strerror($opt_ret) . "\n"; return false; } if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number)){ socket_close($s); return true; }else{ echo "socket_sendto() failed!"; return false; } } } WakeOnLan("00:12:4G:SF:12:13",gethostbyname("myhomeserver.dynamicdns.org"));
Odeslání z Windows
Pro odeslání z Windows existuje několik utilitek, jako například PowerOff, který lze použít i v dávkových souborech a i pro jiné vychytávky jako je například vypínání počítače nebo zamykání obrazovky.
Autor: ![]() Vydáno: 24.7.2010 17:44 Přečteno: 1105x Hodnocení: neohodnoceno Vaše hodnocení: |
Wikipedia: Wake on LAN MSDN: WakoOnLan přes VB.NET |
Komentáře
Nebyly přidány žádné komentáře.