Che cos’è WoWLAN?
WoWLAN o Wake on Wireless LAN fornisce ai dispositivi abilitati alla rete la possibilità di essere portati fuori dal sonno da altri dispositivi sulla rete. WOL o Wake On Lan è stato intorno per un po ‘ e utilizzato in molti scenari diversi. WoWLAN in realtà aggiunge solo funzionalità WOL alle interfacce wireless invece di connessioni ethernet cablate.
Chi usa WoWLAN?
La prima volta che mi è stato chiesto di WoWLAN era al lavoro, quando un cliente voleva svegliare il loro Mac Mini con iRule. Mac Mini sono utilizzati una discreta quantità di HTPC e tenerli svegli non è un grosso problema, ma permettendogli di dormire è la funzionalità predefinita.
Lo scenario precedente era molto tempo fa e non ci avevo pensato molto fino a poco tempo fa. Sono sul mio computer molto, alla mia scrivania, sul divano, e in qualsiasi altro luogo si può prendere un computer. Ho un computer desktop e un Macbook Pro. I desktop remoto nel mio desktop spesso, ma non è possibile desktop remoto a meno che il computer è sveglio. Quindi, ho iniziato a curiosare per convincere WoWLAN a lavorare come voglio.
Sono sicuro che ci sono altri scenari in cui questo potrebbe e sarà utile.
Impostazione di WoWLAN
Apri Gestione periferiche, trova l’interfaccia wireless e apri le preferenze
Vai alla scheda Avanzate e assicurati che il “Wake on Magic Packet” sia abilitato.
Passare alla scheda Gestione alimentazione e selezionare la casella Consenti al dispositivo di riattivare il computer e consenti solo a Magic packet di riattivare il computer.
Ottieni l’indirizzo MAC dei dispositivi eseguendo ipconfig /all
. L’output dovrebbe contenere un indirizzo fisico per ogni interfaccia che hai.
Invio del pacchetto
Ci sono più strumenti che ho visto là fuori per inviare pacchetti WOL o Magic. Dato che sono uno sviluppatore, ho deciso di montare qualcosa di molto veloce per aiutarmi a inviare il pacchetto.
Dal mio macbook pro, uso mono per eseguire il programma.
mono /path/to/exe/wakeup.exe 0C-8B-FD-24-1A-8B
Il Codice
using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Text.RegularExpressions;using System.Linq;public class Program{ public static void Main(String args) { if(args.Length != 1) { Console.WriteLine("Usage: wakeup.exe "); System.Environment.Exit(-1); } // strip non-hex characters var macAddress = new Regex("").Replace(args, ""); // build magic packet string hexMagicPacket = String.Concat(Enumerable.Repeat("FF", 6)) + String.Concat(Enumerable.Repeat(macAddress, 16)); // hex string to byte array byte magicPacket = Enumerable.Range(0, hexMagicPacket.Length) .Where(x => x % 2 == 0) .Select(x => Convert.ToByte(hexMagicPacket.Substring(x, 2), 16)) .ToArray(); // send packet to broadcast address at port 9 UdpClient udpClient = new UdpClient(); udpClient.Connect(IPAddress.Broadcast, 9); udpClient.Send(magicPacket, magicPacket.Length); Console.WriteLine("Magic Packet Sent"); }}