#!/usr/bin/perl -w # ip_check.pl - by dual # # Checks for and notifies user about WAN IP changes ################################################### use strict; # Read /tmp/in_ip open my $tmp_in_ip, '<', "/tmp/in_ip" or die "Can't read in_ip: $!"; chomp(my $in_ip = <$tmp_in_ip>); # Get WAN IP from whatip.gzo.com my @source = `lynx -source http://whatip.gzo.com/`; foreach my $line (@source) { my $out_ip; if ($line =~ /Your IP address is: (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/) { $out_ip = $1; } compare($in_ip, $out_ip); } # Compare IPs, mail results and write /tmp/in_ip sub compare { my ($old_ip, $new_ip) = @_; if ($old_ip ne $new_ip) { my $addy = "user\@localhost"; open my $mail, "|/usr/bin/mail -s \"IP has changed!\" $addy" or die "Can't pipe: $!"; print $mail "New IP: $new_ip\n"; print $mail "\n"; system("echo $new_ip >| /tmp/in_ip"); } return 0; }