#!/usr/bin/perl -w use strict; use warnings; use SOAP::Lite; use Data::Dumper; # consts use constant { FRITZ_USER => "dslf-config", FRITZ_PASS => "***********", #BASIC_URI => "urn:schemas-upnp-org:service:", BASIC_URI => "urn:dslforum-org:service:", BASIC_PROXY => "http://fritz.box:49000/upnp/control/deviceinfo", HTTPS_PROXY => "https://fritz.box:", }; # zunächst fordern wie wie im ersten Beitrag den Security Port an my $s = SOAP::Lite -> uri('urn:dslforum-org:service:DeviceInfo:1') -> proxy('http://fritz.box:49000/upnp/control/deviceinfo') -> getSecurityPort(); my $port = $s->result; print "Using TCP port $port for Fritzbox access.\n"; # jetzt müssen wir die Zertifikatsüberprüfung abschalten BEGIN { $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0; } undef $s; # hier die Abfrage der externen IP $s = SOAP::Lite -> uri(BASIC_URI . "WLANConfiguration:2") -> proxy(HTTPS_PROXY . $port . "/upnp/control/wlanconfig2", ssl_opts => [ SSL_verify_mode => 0 ] ) -> GetGenericAssociatedDeviceInfo( INDEX 1 - ???????? ); open FH, ">erg_dumper.txt" or die ("Fehler beim schreiben $!"); print FH Dumper $s; close FH; print "result: " . $s->result . "\n"; # dieser Code authentifiziert an der Box sub SOAP::Transport::HTTP::Client::get_basic_credentials { return FRITZ_USER => FRITZ_PASS; }