olá pessoal.. uso estes nas minhas crianças...

este fica na maquina cliente

fs-sp:/admrede/scripts# cat servidor_shutdown.py
#!/usr/bin/python
import socket
import string
import sys
import commands

HOST= ''
PORT = 50007
SERVER_VALIDO = sys.argv[1]

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
tmp = string.find(addr[0],SERVER_VALIDO)
if tmp == 0:
print 'Servidor OK'
else:
print 'Servidor invalido', addr[0]
sys.exit()
while 1:
data = conn.recv(1024)
if not data: break
tmp = string.find(data,'Desligar')
if tmp == 0:
print commands.getstatusoutput("/sbin/shutdown -h now")
conn.send(data)
conn.close()

este fica no servidor.

#!/usr/bin/python
import socket
import sys

HOST= sys.argv[1]
PORT=50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send('Desligar')
data = s.recv(1024)
s.close()
print 'Desligando Servidor', data

qdo eu executo este script com o ip da maquina de destino, esta desliga automaticamente. nao precisa de dhcp, mas eh necessário q o primeiro script esteja rodando em segundo plano . Estou saindo pra trabalhar agora, qq duvida posta aih q eu vou explicando como eu fiz. Detalhe: este perl NÃO é meu. encontrei-o durante algumas pesquisas..

Espero ter ajudado.