#!/usr/bin/perl -w use English; use strict; use vars qw( $INET_ADDR_FILE ); $INET_ADDR_FILE = "/home/adamm/.current_inet_addr"; die "only currently implemented for linux." unless ($OSNAME eq 'linux'); ### MAIN my ($old_inet_addr, $found_old_addr_file) = read_saved_inet_addr(); my $new_inet_addr = read_new_inet_addr(); if (!$found_old_addr_file) { write_new_inet_addr($new_inet_addr); print "Current IP address ($new_inet_addr) stored to disk.\n"; } elsif ($old_inet_addr ne $new_inet_addr) { write_new_inet_addr($new_inet_addr); print <; $old_addr =~ s/\r|\n//; close($fh) or die "couldn't close $INET_ADDR_FILE"; } return ($old_addr, $oldfile_found); } sub read_new_inet_addr { local $INPUT_RECORD_SEPARATOR = undef; my $ifconfig_output = `/sbin/ifconfig eth0`; my ($new_inet_addr) = ($ifconfig_output =~ m/inet\saddr:(.+?)\s/); return $new_inet_addr; } sub write_new_inet_addr { my $new_addr = shift; my $fh; open($fh, "> $INET_ADDR_FILE") or die "couldn't create $INET_ADDR_FILE"; print $fh $new_addr,"\n"; close($fh) or die "couldn't close $INET_ADDR_FILE"; }