Не знает ли кто-нибудь как разбудить выключенный компьютер при помощи Wake on LAN ?
Насколько я знаю, надо послать на его сетевуху т.н. "Magic Packet". Как его сформировать? Может у кого примеры/исходники есть ?
Здравствуйте kastet, Вы писали:
K>Не знает ли кто-нибудь как разбудить выключенный компьютер при помощи Wake on LAN ?
Вот, завалялось...
#!/usr/bin/perl
#
# little perl script to send a wake-up "magic" packet via lan to power-on
# a PC. This is only supported by new BIOS versions, and must be supported
# by the LAN adapter.
#
# (c) 1999 by Marc Heuse <mheuse@kpmg.com>, the GPL applies to this code.
#
$IP="255.255.255.255"; # limited broadcast ip (default)
$PORT="9991"; # udp port (default)
$INIT_STREAM="\377\377\377\377\377\377"; # (don't change this)
require 5.002;
use Socket;
if (not defined $ARGV[0]) {
print "(c) 1999 by Marc Heuse <mheuse\@kpmg.com>\n\n";
print "Syntax: $0 ethernet_id [ip-address] [udp-port]\n\n";
print "Sends a magic wakeup packet to turn on a PC via the LAN\n";
print "Example: $0 00:80:c9:d1:e0:eb 10.70.82.255 53\n\n";
exit(1);
}
$ETHERNET_ID = $ARGV[0];
$IP = $ARGV[1] if defined $ARGV[1];
$PORT = $ARGV[2] if defined $ARGV[2];
print STDOUT "Sending to Ethernet-ID $ETHERNET_ID, using destination $IP:$PORT\n";
$protocol = getprotobyname('udp');
socket(S, &PF_INET, &SOCK_DGRAM, $protocol) || die "can't create socket\n";
setsockopt(S, SOL_SOCKET, SO_REUSEADDR, 1);
setsockopt(S, SOL_SOCKET, SO_BROADCAST, 1);
bind(S, sockaddr_in(0, INADDR_ANY)) || die "can't bind\n";
$ipaddr = inet_aton($IP) || die "unknown host: $IP\n";
$paddr = sockaddr_in($PORT, $ipaddr) || die "sockaddr failed\n";
$ETHERNET_ID =~ s/[:-]//g;
$ETHERNET_ID = pack "H12", $ETHERNET_ID;
$WAKE_UP = $INIT_STREAM; $i=0;
while ($i<16) {
$WAKE_UP = $WAKE_UP . $ETHERNET_ID;
$i++;
}
# send three times to be sure the system gets the packet
send (S, $WAKE_UP,0,$paddr) || die "send failed.\n";
send (S, $WAKE_UP,0,$paddr);
send (S, $WAKE_UP,0,$paddr);
Оно конечно замечательно.Скриптик правильный.
Но можно узнать вы с помощью его включили компьютер?
Если да,то можно узнать подробности(порт например).
А то писал прогу на d6;делает то же самое,но машина так и не проснулась.
Здравствуйте, kastet, Вы писали:
K>Здравствуйте, Formica, Вы писали:
F>>А то писал прогу на d6;делает то же самое,но машина так и не проснулась.
Дома нет под рукой подходящего железа, а на работе — машины с перлом и времени
K>Аналогично! Машину включить не удалось. Злые языки говорят, что чтобы работал Wake On Lan надо какой-то кабель из сетевухи в материнскую плату воткнуть. Проверить не могу, кабеля нет.
Чтобы работала эта фича надо выполнить минимум 2.5 начальных условия:
1. Сетевуха должна быть PCI2.2-compatible, либо более старая, но с тем самым кабелем (по нему мать подает питающие 5В на сетевуху и слушает ее выход WOL). В PCI2.2 все это возможно без внешнего шнурка.
2. Режим WOL должен поддерживаться и быть включен в БИОСе (WakeOn — NetCard)
2.5

Комп предварительно должен быть "правильно" выключен

— кажется, это называется "Soft-Off" — лампочки на клаве и сетевой карте должны гореть (хотя, я видел сетевуху, где это не так, но светодиодами при пинге она подмаргивает в "выключенном" состоянии). При выключении кнопкой, некоторых вариантах выключения компа виндой и пропадании питания — это не всегда так.
Ежели появится поболе времени на работе — все ж попробую...
Собственно, интересно, работает ли пинг/коннект по MAC адресу...

...