WOL mit PHP Script ?

Eigener Bereich für die Entwickler unter uns! Add-Ins, aber auch andere Programme.
Antworten
mack
Foren-Mitglied
Beiträge: 233
Registriert: 5. Dez 2007, 10:39
Wohnort: Schleswig-Holstein

WOL mit PHP Script ?

Beitrag von mack »

Kann hier einer PHP ?

Es geht darum den WHS per WOL von einer Webseite die auf dem eignen Webserver liegt auf zu wecken. Ich nutze einen kleinen Linux Webserver (WL-HDD mit Oleg Firmware) und habe darauf unter anderem wakelan.

Das Tool wakelan klappt auch prima bis jetzt halt nur in der Kommandozeile (z.B. wakelan -m 00:xx:xx:xx:xx:xx).

Ich würde es aber gerne per Button von meiner Webseite aus bewerkstelligen das mein WHS aufwacht.

Habe nun schon mehrfach gelesen das dies per PHP möglich sein soll den wakelan Befehl auszuführen. Leider beherrsche ich aber leider kein PHP und bräuche da mal Hilfe wie das gehen soll.

Gruß Mack
Am Experimentieren mit Windows Server 2016 Essentials
Benutzeravatar
AliG
Moderator
Beiträge: 3727
Registriert: 6. Jun 2007, 17:33
Wohnort: Salzburg, Österreich

Re: WOL mit PHP Script ?

Beitrag von AliG »

Hi!

Probiers mal mit folgendem Code:

Code: Alles auswählen

<html>
<body>
<?php
echo shell_exec("wakelan -m 00:xx:xx:xx:xx:xx");
?>
</body>
</html>
Das speicherst du in eine Textdatei mit der Endung .php und dazu das wakelan Tool im selben Ordner.
Wenn du dann die Seite über den Browser aufrufst, sollte der Server starten. Sollte das gehen, können wir ja noch am Button basteln ;)

lg Alex
Mache ich etwas richtig, merkt es keiner. Mache ich etwas falsch, vergisst es keiner. :D

Mein WHS
mack
Foren-Mitglied
Beiträge: 233
Registriert: 5. Dez 2007, 10:39
Wohnort: Schleswig-Holstein

Re: WOL mit PHP Script ?

Beitrag von mack »

Hallo Alex danke für die rasche Antwort. Leider hat das so noch nicht geklappt.

Hast du vielleicht noch einen Tipp ?

Gruß Mack
Am Experimentieren mit Windows Server 2016 Essentials
Benutzeravatar
AliG
Moderator
Beiträge: 3727
Registriert: 6. Jun 2007, 17:33
Wohnort: Salzburg, Österreich

Re: WOL mit PHP Script ?

Beitrag von AliG »

Hi!

Was bringt denn der Aufruf der Seite für eine Meldung?

lg Alex
Mache ich etwas richtig, merkt es keiner. Mache ich etwas falsch, vergisst es keiner. :D

Mein WHS
mack
Foren-Mitglied
Beiträge: 233
Registriert: 5. Dez 2007, 10:39
Wohnort: Schleswig-Holstein

Re: WOL mit PHP Script ?

Beitrag von mack »

Hallo Alex ich muss mich entschuldigen es geht doch ich habe einen Fehler gemacht.
Vielen Dank für das kleine Script kannst du mir nun noch dabei helfen wie ich das mit einem einfachen Button verknüpfen kann ?

HTML kann ich ganz gut aber halt leider kein PHP muss mir mal unbedingt ein Buch darüber kaufen und das auch lernen.


Gruß Mack
Am Experimentieren mit Windows Server 2016 Essentials
Benutzeravatar
AliG
Moderator
Beiträge: 3727
Registriert: 6. Jun 2007, 17:33
Wohnort: Salzburg, Österreich

Re: WOL mit PHP Script ?

Beitrag von AliG »

Hi!

Die einfachste Möglichkeit ist, die PHP Seite beim Klicken auf den Button aufzurufen.

Da du dich mit HTML auskennst, sollte das ja kein Problem sein ;)

lg Alex
Mache ich etwas richtig, merkt es keiner. Mache ich etwas falsch, vergisst es keiner. :D

Mein WHS
noauser
Foren-Einsteiger
Beiträge: 15
Registriert: 26. Jul 2009, 14:23

Re: WOL mit PHP Script ?

Beitrag von noauser »

Kommt vielleicht spät, aber egal:

Code: Alles auswählen


<?php

$mac = '00:xx:xx:xx:xx:xx; //MAC Adresse
$ip = 'udp://meine.domain.de'; //oder mit IP z.B.: udp://192.168.0.1
$port = 80;

function wakeup($mac_addr,$router_addr, $port) {
     if ($fp = fsockopen($router_addr, $port, $errno, $errstr, 4)) {
          //erlaubte Zeichen:
          $hexchars = array("0","1","2","3","4","5","6","7","8","9",
          "A","B","C","D","E","F",
          "a","b","c","d","e","f"
          );


     // 6 "volle" bytes (Also mit Wert 255 bzw. FF in hexadezimal)
     $data = "\xFF\xFF\xFF\xFF\xFF\xFF";
     $hexmac = "";

     // Jetzt werden unntige zeichen in der mac-adresse
     // entfern (also z.B. die bindestriche usw.)
     for ($i = 0; $i < strlen($mac_addr); $i++) {
          if (!in_array(substr($mac_addr, $i, 1), $hexchars)) {
               $mac_addr = str_replace(substr($mac_addr, $i, 1), "",
$mac_addr);
     echo $mac_addr;
               }
          }

     for ($i = 0; $i < 12; $i += 2) {
          $hexmac .= chr(hexdec(substr($mac_addr, $i, 2)));
          }

     // Hexadresse wird 16mal hintereinandergeschrieben
     for ($i = 0; $i < 16; $i++) {
          $data .= $hexmac;
          }
     fputs($fp, $data);
     fclose($fp);
     echo 'MagicPaket wurde verschickt';
     return true;
     }
Else {
     echo "<b>Warnung: $errno</b> $errstr<br>";
     return false;
     }
}

wakeup($mac, $ip, $port);

?>
mack
Foren-Mitglied
Beiträge: 233
Registriert: 5. Dez 2007, 10:39
Wohnort: Schleswig-Holstein

Re: WOL mit PHP Script ?

Beitrag von mack »

Hallo

sagt mal kann man nicht auch eine Batch Datei mit Hilfe von CGI starten ?

Leider kenne ich mich mit CGI nicht aus daher die Frage hat da jemand eine Idee wie man das bewerkstelligen könnte ?


Gruß Mack
Am Experimentieren mit Windows Server 2016 Essentials
der-Leo
Foren-Mitglied
Beiträge: 649
Registriert: 30. Aug 2009, 13:32
Kontaktdaten:

Re: WOL mit PHP Script ?

Beitrag von der-Leo »

Was willst du genau machen?
In PHP kannst du beispielsweise jedes Programm auf dem Sevrer per system() oder exec() aufrufen.
Ähnliches gibt es für jede andere Skriptsprache auch.
Ob das die Serverkonfiguration aber erlaubt ist eine andere Sache.....
mack
Foren-Mitglied
Beiträge: 233
Registriert: 5. Dez 2007, 10:39
Wohnort: Schleswig-Holstein

Re: WOL mit PHP Script ?

Beitrag von mack »

Na der Gedanke der mir gekommen ist das man für die WOL Geschichte ja ein einfaches Tool z.B. wake.exe nehmen könnte und diese mittels Batch Datei unter CGI startet.


Gruß Mack
Am Experimentieren mit Windows Server 2016 Essentials
der-Leo
Foren-Mitglied
Beiträge: 649
Registriert: 30. Aug 2009, 13:32
Kontaktdaten:

Re: WOL mit PHP Script ?

Beitrag von der-Leo »

Wofür?
Du kannst doch mit jeder Skriptsprache ein einfaches MagikPaket zusammenbauen und das dann losschicken?
Wieso willst du per CGI ein Programm starten?
Die meisten Hoster erlauben das eh nicht....
Und natürlich würde das auch nur auf einem Windows-Server funktionieren.
Oder du würdest dir entsprechende Linux-Tools besorgen.
Aber wie schon gesagt...
das ist doch völlig unnötig... geht ja auch ohne....
mack
Foren-Mitglied
Beiträge: 233
Registriert: 5. Dez 2007, 10:39
Wohnort: Schleswig-Holstein

Re: WOL mit PHP Script ?

Beitrag von mack »

Hi ich habe einen Windows Web Server bei mir stehen auf dem ich das ausprobieren will.
Per PHP klappt das nicht zuverlässig genug.

Da ich mich mit CGI aber leider nicht gut auskenne bräuchte ich einmal den Code um eine Batchdatei zu starten.

Gruß Mack
Am Experimentieren mit Windows Server 2016 Essentials
der-Leo
Foren-Mitglied
Beiträge: 649
Registriert: 30. Aug 2009, 13:32
Kontaktdaten:

Re: WOL mit PHP Script ?

Beitrag von der-Leo »

Erstmal ist CGI nur eine Schnittstelle: http://de.wikipedia.org/wiki/Common_Gateway_Interface

Einen einfachen Aufruf eines Batchfiles kannst du wie schon mal gesagt mit jeder Skriptsprache realisieren.
In PHP sieht das dann so aus:
<?php
system('\PFAD\ZUR\DATE\irgendwas.bat');
?>

Wenn du PHP auf dem Server am Laufen hast dann test doch das mal....
Antworten