Il linguaggio di programmazione PHP
 

wol: accensione dispositivo

alex 24 Ott 2016 09:22
function wakeUp($macAddressHexadecimal, $broadcastAddress)

{

$macAddressHexadecimal = str_replace(':', '', $macAddressHexadecimal);

// check if $macAddress is a valid mac address

if (!ctype_xdigit($macAddressHexadecimal)) {

throw new \Exception('Mac address invalid, only 0-9 and a-f are allowed');

}

$macAddressBinary = pack('H12', $macAddressHexadecimal);

$magicPacket = str_repeat(chr(0xff), 6).str_repeat($macAddressBinary, 16);

if (!$fp = fsockopen('udp://' . $broadcastAddress, 7, $errno, $errstr,
2)) {

throw new \Exception("Cannot open UDP socket: {$errstr}", $errno);

}

fputs($fp, $magicPacket);

fclose($fp);

}



wakeUp('33:22:12:64:cc:15','192.168.0.120');


Ma il dispositivo non si accende... perchè?
bramante 24 Ott 2016 10:04
Il 24/10/2016 09:22, alex ha scritto:
> function wakeUp($macAddressHexadecimal, $broadcastAddress)
>
> {
>
> $macAddressHexadecimal = str_replace(':', '', $macAddressHexadecimal);
>
> // check if $macAddress is a valid mac address
>
> if (!ctype_xdigit($macAddressHexadecimal)) {
>
> throw new \Exception('Mac address invalid, only 0-9 and a-f are
> allowed');
>
> }
>
> $macAddressBinary = pack('H12', $macAddressHexadecimal);
>
> $magicPacket = str_repeat(chr(0xff),
> 6).str_repeat($macAddressBinary, 16);
>
> if (!$fp = fsockopen('udp://' . $broadcastAddress, 7, $errno,
> $errstr, 2)) {
>
> throw new \Exception("Cannot open UDP socket: {$errstr}", $errno);
>
> }
>
> fputs($fp, $magicPacket);
>
> fclose($fp);
>
> }
>
>
>
> wakeUp('33:22:12:64:cc:15','192.168.0.120');
>
>
> Ma il dispositivo non si accende... perchè?

domanda b*****e
ma il dispositivo è abilitato per il wake up on lan???

Ciao
alex 24 Ott 2016 13:00
Il 24/10/2016 10:04, bramante ha scritto:
>
> domanda b*****e
> ma il dispositivo è abilitato per il wake up on lan???

si, ma come secondo parametro bisogna passare l'ip, giusto?
fulvio 24 Ott 2016 19:01
Il 24/10/2016 13:00, alex ha scritto:

> si, ma come secondo parametro bisogna passare l'ip, giusto?

Penso non sia l'IP, ma sia il broadcast, cioè nel tuo caso 192.168.0.255
Prova.

fulvio
alex 24 Ott 2016 19:40
Il 24/10/2016 19:01, fulvio ha scritto:
> Il 24/10/2016 13:00, alex ha scritto:
>
>> si, ma come secondo parametro bisogna passare l'ip, giusto?
>
> Penso non sia l'IP, ma sia il broadcast, cioè nel tuo caso 192.168.0.255
> Prova.
>
> fulvio
>

PHP Warning: fsockopen(): unable to connect to udp://192.168.0.255:7
(Permission denied) in /mnt/usb_storage/test/php/src/index.php on line 11
fulvio 25 Ott 2016 10:07
Il 24/10/2016 19:40, alex ha scritto:
> PHP Warning: fsockopen(): unable to connect to udp://192.168.0.255:7
> (Permission denied) in /mnt/usb_storage/test/php/src/index.php on line 11
>

Questo sembra un problema di permessi, con quale utente esegui lo script ?
Deve essere root, oppure deve essere eseguito con sudo ecc. ecc.
alex 25 Ott 2016 18:07
Il 25/10/2016 10:07, fulvio ha scritto:
> Il 24/10/2016 19:40, alex ha scritto:
>> PHP Warning: fsockopen(): unable to connect to udp://192.168.0.255:7
>> (Permission denied) in /mnt/usb_storage/test/php/src/index.php on line 11
>>
>
> Questo sembra un problema di permessi, con quale utente esegui lo script ?

sudo php wol.php

> Deve essere root,

cioè ?

$ su
passsword:...
$ php wol.php

non va lo stesso, esce sempre il warn...
fulvio 26 Ott 2016 18:34
Il 25/10/2016 18:07, alex ha scritto:

> non va lo stesso, esce sempre il warn...

Punto primo: ho sbagliato, il broadcast è 255.255.255.255
Ma se anche metti quel valore nella tua funzione (che ho provato) continua
a dare il warn
Mentre io uso questa qua sotto con successo, è un po' "grezza", senza
controllo di errori e con ampi margini di miglioramento, ma funziona:

function wol($broadcast, $mac)
{
$mac_array = split(':', $mac);
$hwaddr = '';
foreach($mac_array AS $octet)
{
$hwaddr .= chr(hexdec($octet));
}

// Create Magic Packet
$packet = '';
for ($i = 1; $i <= 6; $i++)
{
$packet .= chr(255);
}
for ($i = 1; $i <= 16; $i++)
{
$packet .= $hwaddr;
}
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if ($sock)
{
$options = socket_set_option($sock, 1, 6, true);

if ($options >=0)
{
$e = socket_sendto($sock, $packet, strlen($packet), 0,
$broadcast, 9);
socket_close($sock);
}
}
}

wol('255.255.255.255','00:13:8f:a4:5f:75');
alex 27 Ott 2016 13:20
Il 26/10/2016 18:34, fulvio ha scritto:
> Mentre io uso questa qua sotto con successo, è un po' "grezza", senza
> controllo di errori e con ampi margini di miglioramento, ma funziona:

grazie

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio di programmazione PHP | Tutti i gruppi | it.comp.www.php | Notizie e discussioni php | Php Mobile | Servizio di consultazione news.