Software
Wake On LanOeioei, ik zie dat ik dit al een jaar geleden beloofd heb dit verhaaltje te schrijven. Belofte maakt schuld. Hier komt ie dan....
Dit script verstuurt op commando een zo genaamd magic packet naar de geslecteerde computer.
De geadresseerde computer reageert daarop door zichzelf in te schakelen.
Omdat het wol script geschreven is in Python is het op vrijwel elk systeem te gebruiken. Persoonlijk gebruik ik het enkel op Linux, maar het zal ook moeten draaien op Mac en Windows computers. Het WOL Python Script
#! /usr/bin/python
# Wake on Lan
#
# Gebruik: wol computer1 computer2 00:11:22:33:44:55
#
# Autheur: San Bergmans
# www.oeioei.nl
#
# Pas de broadcast lijst aan op je eigen netwerk.
# Pas de known_computers lijst aan op je eigen computers.
#
import sys, struct, socket
broadcast = ['192.168.1.255', '192.168.0.255']
known_computers = {
'mercurius' : '00:1C:55:35:12:BF',
'venus' : '00:1d:39:55:5c:df',
'aarde' : '00:10:60:15:97:fb',
'maan' : '00:10:60:15:97:fb',
'mars' : '00:10:DC:34:B2:87',
}
wol_port = 9
def WakeOnLan(ethernet_address):
# Construct 6 byte hardware address
add_oct = ethernet_address.split(':')
if len(add_oct) != 6:
print "\n*** Illegal MAC address\n"
print "MAC should be written as 00:11:22:33:44:55\n"
return
hwa = struct.pack('BBBBBB', int(add_oct[0],16),
int(add_oct[1],16),
int(add_oct[2],16),
int(add_oct[3],16),
int(add_oct[4],16),
int(add_oct[5],16))
# Build magic packet
msg = '\xff' * 6 + hwa * 16
# Send packet to broadcast address using UDP port 9
soc = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
soc.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1)
for i in broadcast:
soc.sendto(msg,(i,wol_port))
soc.close()
if len(sys.argv) == 1:
print "\n*** No computer given to power up\n"
print "Use: 'wol computername' or 'wol 00:11:22:33:44:55'"
else:
for i in sys.argv:
if i[0] != '/':
if ":" in i:
# Wake up using MAC address
WakeOnLan(i)
else:
# Wake up known computers
if i in known_computers:
WakeOnLan(known_computers[i])
else:
print "\n*** Unknown computer " + i + "\n"
quit()
if len(sys.argv) == 2:
print "\nDone! The computer should be up and running in a short while."
else:
print "\nDone! The computers should be up and running in a short while."
print
Kopieer en plak het script in een bestandje. Je mag zelf weten welke naam je aan het bestand geeft. Zorg er ook voor dat het bestand executable is.
Je moet nog een paar aanpassinkjes maken aan het script.
Om te beginnen moet je netwerk informatie kloppen.
Je kunt een of meerdere netwerken invoeren in de lijst "broadcast".
In de meeste gevallen is er slechts een netwerk, maar je kunt er dus meerdere invullen.
Het WOL Script In Gebruik
Het wol script is zeer eenvoudig in het gebruik.
Het command wol aarde venus zal de computers met de namen aarde en venus een wake up commando sturen.
In plaats van de computer naam mag ook een MAC adres gegeven worden.
Dus wol 00:11:22:33:44:55 zal de computer met het betreffende MAC adrsss een wake up commando sturen.
AlternatiefAls je, net als ik, in het bezit bent van een Fritz!box modem dan kun je ook vanuit die Fritz!box computers laten ontwaken. Dit heeft dus niets met het hier getoonde Python script te maken. Het grote voordeel daarvan is dat er nog geen computers wakker hoeven te zijn om andere computers wakker te kunnen schoppen. Het nadeel is echter dat je dat niet kunt automatiseren, wat je met het losse wol scriptje wel kunt.
Door nu te surfen naar https://jeeigennetwerk.nl krijg je een login schermpje te zien. Nadat je hier de juiste gegevens hebt ingevuld kun je pas echt inloggen op je Fritz!box.
Daarna is het een kwestie van de lijst met PC's oproepen.
Klik bij een van de bedrade computers op het edit symbool (draadloze computers kunnen namelijk niet op afstand aangeschakeld worden).
In het edit scherm staat rechts onderin een knop met de tekst "Start Computer".
Je mag een keer raden wat er gebeurt als je op de knop drukt.
Waarschijnlijk zijn er meerdere modems/routers die dit kunstje kennen. Van de Fritz!box weet ik het in ieder geval zeker. Daarom heb ik die hier genoemd.
© 2010, San Bergmans, Oisterwijk, The Netherlands http://www.oeioei.nl |
|