7 use Regexp::Common qw/net/;
14 my ( $port, $mac, $ip ) = ( 9 );
16 if ( $target =~ m/$RE{net}{MAC}{-keep}/ ) {
18 $ip = client::ip_from_mac $1;
19 } elsif ( $target =~ m/$RE{net}{IPv4}{-keep}/ ) {
21 $mac = client::mac_from_ip $1;
23 die "$target isn't IP or MAC";
26 warn "# power_on $ip $mac";
28 my $sock = IO::Socket::INET->new( Proto=>'udp' );
29 my $ip_addr = inet_aton($ip);
30 my $sock_addr = sockaddr_in($port, $ip_addr);
33 my $packet = pack('C6H*', 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, $mac x 16);
35 setsockopt($sock, SOL_SOCKET, SO_BROADCAST, 1);
36 send($sock, $packet, 0, $sock_addr);