Resource icon

PCP_set_announce_ip.pl

Programmiersprache(n)
Perl
Port Control Protocol (PCP) ist ein standardisiertes Geräte-Steuerungsprotokoll, das von einigen NAT-Routern unterstützt wird.

Das Skript wartet auf eine announce Message und setzt dann eth0:1 auf die passende IP des Routers.

Ich nutze es zur automatischen Konfiguration von Fritz!Boxen.
Funktioniert nur mit den neueren Fritz!Box Modellen.

Perl:
#!/usr/bin/perl

use strict;
use IO::Socket;

sub add_to_ip($$) {
  my( $ip, $add ) = @_;
  inet_ntoa pack( 'N', unpack('N',inet_aton $ip) + $add )
}

sub get_announce_ip {

    my($sock, $newmsg, $hishost, $MAXLEN, $PORTNO, $ipaddr, $port);

    $MAXLEN = 1024;
    $PORTNO = 5350;

    $sock = IO::Socket::INET->new(
            LocalPort => $PORTNO,
            LocalAddr => "224.0.0.1",
            Proto => 'udp') or die "socket: $@";

    while ($sock->recv($newmsg, $MAXLEN)) {
        ($port, $ipaddr) = sockaddr_in($sock->peername);
        my $msg = unpack("H*", "$newmsg");
        last if ( $msg =~ /^028[0]{12}\d+/ );
    }
return inet_ntoa($ipaddr);
}


my $box_ip = get_announce_ip();

system("ifconfig eth0:1 ".$box_ip);
printf "Set eth0:1 to ip ".get_announce_ip()."\n";
Autor
lano
First release
Last update
Bewertung
0,00 Stern(e) 0 Bewertungen

More resources from lano

Oben