Perl Script für WOL -> invalid syntax

Th4R4t

Enthusiast
Thread Starter
Mitglied seit
07.07.2004
Beiträge
1.342
Ort
Düsseldorf
Hi,
habe ein Problem mit einem WOL Script das ich im Internet gefunden habe. Es soll dazu dienen meinen Server per WOL der Fritzbox zu wecken.
Code:
#!/usr/bin/perl
#
# (c)2012 speaker

use strict;
use warnings;
use LWP::UserAgent;
use Encode;
use Digest::MD5 qw(md5_hex);

my $ua = LWP::UserAgent->new;

### start of config section

# if you don't want to store your credentials within this script just keep the
# following three dummy values and set $ask_auth = 1
my $httpuser = "<http auth user>";
my $httppass = "<http auth password>";
my $fritzpass = "<fritzbox admin password>";
my $ask_auth = 0;

my $host = "<hostname or ip>";
my $port = 443;
my $mac = "<mac for wake up>";  # use mac format 01:23:45:67:89:AB

# uncomment the following line if you get ssl certificate warnings
#$ua->ssl_opts(verify_hostname => 0);

### end of config section
### do not change anything below!

sub readcreds() {
    use Term::ReadKey;
    print "http auth user: "; chomp($httpuser = ReadLine(0));
    ReadMode('noecho');
    print "http auth pass: "; chomp($httppass = ReadLine(0));
    print "\nfritzbox pass: "; chomp($fritzpass = ReadLine(0));
    ReadMode('restore');
    print "\n\n";
}

readcreds if ($ask_auth);

$ua->timeout(30);
push @{$ua->requests_redirectable}, 'POST';
$ua->credentials($host.":".$port, "HTTPS Access", $httpuser, $httppass);

my $url_base = "https://".$host;
my $url_login = $url_base."/login.lua";
my $url_wakeup = $url_base."/cgi-bin/webcm";

my $r = $ua->get($url_login);
if ($r->is_success) {
    my $c = $r->decoded_content;
    if ($c =~ m#(?:g_challenge|var challenge|\["security:status/challenge"\]) = "([a-f0-9]+)"#) {
        my $challenge = $1;
        my %data = (
            username => $httpuser,
            response => sprintf "%s-%s", $challenge, md5_hex(encode("UTF16-LE", sprintf "%s-%s", $challenge, $httppass))            
        );
        $r = $ua->post($url_login, \%data);
        $c = $r->decoded_content;
        if ($c =~ m#(?:home|logout)\.lua\?sid=([a-f0-9]+)#) {
            my $sid = $1;
            %data = (sid => $sid, "wakeup:settings/mac" => $mac);
            $r = $ua->post($url_wakeup, \%data);
            if ($r->is_success) {
                print "wakeup done.\n";
            } else {
                printf "error: %s\n", $r->status_line;
            }
        } else {
            print "error: could not find a session id\n";
        }
    } else {
        print "error: could not find a challenge\n";    
    }
} else {
    printf "error: could not login - %s\n", $r->status_line;
}
exit 0;

Wenn ich per Terminal die Datei ausführen will erscheint immer folgende Meldung:
Code:
File "1.py", line 5
    use strict;
             ^
SyntaxError: invalid syntax

Wo liegt der Fehler bzw. was mache ich falsch? :/ Hab den Code in Textmate eingefügt und normal mit der Endung ".py" gespeichert.
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
funktioniert denn das wecken, wenn du dich im netzwerk befindest?

ein paar hinweise zum server, bzw. von wo aus du den server wecken möchtest, wären hilfreich.
 
Zuletzt bearbeitet:
wecken per FB, also über die Weboberfläche, funktioniert ohne Probleme. Und wenn man diese Zeile "my $ask_auth = 0;" auf 1 setzt soll man eigentlich nach dem PW der Fritzbox gefragt werden, aber soweit komme ich ja nichtmal :d

Szenario is folgendes:

Geweckt werden soll ein N54l, der an der Fritzbox angeschlossen ist, falls ich nicht zuhause bin. Somit wähle ich mich erst per VPN in mein Netzwerk ein und will dann das Script starten, damit ich nicht jedes Mal die Weboberfläche aufrufen muss.

Per Iphone mit VPN + App "myWOL" funktioniert das alles prima, aber meine Mac App "WakeOnLan" hat irgendwie Probleme per VPN den Server zu wecken, darum das Script.

Wie gesagt das Script habe ich 1zu1 von hier: http://www.phutility.de/2012/01/15/script-fuer-wake-on-lan-ueber-fritzbox/ und die anderen Leute haben anscheinend keine Probleme das Script auszuführen
 
Zuletzt bearbeitet:
Wieso .py? Auf welchem System läuft das Script überhaupt? Kann es sein, dass #!/usr/bin/perl ignoriert und das script wegen .py in Python gekippt wird?
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh