:0
* ^Subject:.*\[IP Log\]
/home/your_homedir/path_to_file/ip.txt
####
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print defined $ENV{REMOTE_ADDR} ?
$ENV{REMOTE_ADDR} :
"Not Available" ,
"\n";
####
#!/usr/bin/perl
use strict;
use warnings;
my $logfile = '/home/your_account/path_to_file/ip.txt';
open my $inlog, "<", $logfile or
die "Couldn't open $logfile.\n$!";
my $ip = '';
while ( my $line = <$inlog> ) {
next unless $line =~ m/^IP:\s*\d+\.\d+\.\d+\.\d+\s*$/;
chomp $line;
$ip = $line;
}
close $inlog;
print "Content-Type: text/html\n\n";
print << "HTML";
$ip
HTML
####
#!/perl/bin/perl.exe
use strict;
use warnings;
use LWP::Simple;
use MIME::Lite;
my $reflector = "http://your.webhost.com/cgi-bin/ipreflect.cgi";
my $logfile = "ip.log";
# Get IP from an IP reflector server.
my $ip = get $reflector;
chomp $ip;
my $now = localtime;
$ip = "Reflector server down." unless (
$ip =~ m/^\d+\.\d+\.\d+\.\d+$/ or
$ip =~ m/Not Available/i );
# Read log to determine if the IP changed since last test.
my $ip_changed = "";
if ( -e $logfile ) {
open my $inlog, "<", $logfile or
die "Can't read logfile.\n$!";
while ( <$inlog> ) {
next unless eof;
chomp;
my $last_ip = ( split /\s+=>\s+/ )[1];
$last_ip =~ s/\*$//;
$ip_changed = ( $last_ip ne $ip ) ? "*" : "";
}
close $inlog;
} else {
# If the logfile doesn't exist, assume IP changed.
# This forces an update to the remote server anytime
# the logfile is deleted. Remember, for a fresh start
# at both ends, just delete the local logfile.
$ip_changed = "*";
}
# Update log.
open my $log, ">>", $logfile or
die "Can't open output logfile.\n$!";
print "$now => $ip$ip_changed\n"; # Screen output.
print $log "$now => $ip$ip_changed\n"; # Logfile output.
close $log or die "Couldn't close output file.\n$!";
# If the IP changed, send the new IP to remote server via email.
if ( $ip_changed and $ip =~ m/^\d+\.\d+\.\d+\.\d+$/ ) {
my $msg = MIME::Lite->new(
From =>'your@email.address',
To =>'your.email@address.on.web.host',
Subject =>"[IP Log] $now",
Data =>"Updated: $now\nIP: $ip\n"
);
MIME::Lite->send( 'smtp',
"your.isp.smtp.server",
Timeout => 60
);
$msg->send;
}