Liste externer IP-Adressen erstellen

Bei den meisten Internet-Nutzern wechselt täglich die (externe) IP-Adresse, da die Verbindung vom Provider (meist in der Nacht) kurzzeitig getrennt wird.
Mit dem kleinen Perl-Skript kann man die aktuelle externe IP-Adresse im System-Logfile ablegen lassen:

#!/usr/bin/perl

use strict;
use warnings;

require LWP::UserAgent;

my $debug = 0;
my $ip_address = &get_active_ip;
if ($ip_address eq "") 
 if ($debug) 
  print "keine Netzverbindung";
 ;
 exit(0);

my $ua = LWP::UserAgent->new(
    'agent' => 'Mozilla/5.0',
    'timeout' => 30
);
$ua->env_proxy;

my $uaget = $ua->get('http://whatismyipaddress.com/');

if ($uaget->is_success) 
    my $ipfilter = qr/(2,31,31,31,3)/;
    my $content = $uaget->decoded_content;
    if ($content =~ $ipfilter) 

 # print "$&";
 log_locally($&);
    
    else 
 print "IP could not be found..";
    
else 
    die $uaget->status_line;
    exit 0;

sub log_locally 
    my $SYSLOGPRIO="local0.info"; # hint: local0 --> .app and local1 --> .fw
    if ($debug)    print $_[0] ."";

 `/usr/bin/logger -p $SYSLOGPRIO -t external-ip "$_[0]"`;

# funtion works, but here only to check network connection..
sub get_active_ip 
 my $match_ip = "";
 my $match_status = "status: active";

 unless (  open (IFCONFIG, "/sbin/ifconfig | ") ) 
   die "cannont get ifconfig output";
   ;

 my @result=<IFCONFIG>;
 my @parts;
 
 close IFCONFIG;
 my $line;
 foreach $line (@result) 
  chomp($line);
  if ($line =~ /$match_ip/) 
    @parts = split(/ /, $line);
  
  if ($line =~ /$match_status/) 
    return($parts[1]);



Wenn man das Skript per "Cron-Job" auf einer Unix/Linux/MAC Maschine regelmässig laufen lässt, erzeugt man im Syslog eine Liste der externen IP-Adressen der letzten Zeit.
Mit dem String " external-ip " kann man die Liste schnell finden..
Sorry, für Windows habe ich keine Lösung vorbereitet, obwohl es dort auch "geht" ...

unsere Leidenschaften sind Fotografie, digitale Bildbearbeitung und Programmierung (allg.)