I've got a script that does that. It monitors eth0 by default. Just copy the ip address that you are currently using to a file named "currentIP" and change /home/ghome/scripts to wherever you want to store the script currentIP and the script and you're good to go. Here's the script:

#!/bin/bash

###############################################################
#
# testIP.sh
# version 1.0
# Greg Brown
#
# watches the external interface on my cable modem attached
# box (eth0) and compaires the IP address to what is stored
# in the flat file /home/ghome/scripts/currentIP.  If a change
# has been detected it sends an e-mail to me at work and
# at home so I can change my dynamic hostname resolution.
#
# June 12, 2003
#
# version 1.1
#
# Added a test to make sure that the results caputred in
# $IPADDRESS actually contained something.  If the results
# in $IPADDRESS are null we now exit the script without
# processesing further.
#
# June 13, 2003
#
###############################################################

# get the current ip address on the system
IPADDRESS=`/sbin/ifconfig eth0 | grep inet | tr ':' ' ' | awk '{ print $3 }'`


# test line
# echo "current ip $IPADDRESS"

# now use test to see if $IPADDRESS has a value stored in it
/usr/bin/test $IPADDRESS

# now check the results of $? which is were the results of the above
# test are stored.  If the result is 1 then it is null, if the result
# is 0 then it is NOT null
if /usr/bin/test $? = 1
then

        # debug line    
        # echo "we don't have a IP address stored in $IPADDRESS"

        # we don't have an ip address so exit the script
        # we can assume the interface is down and since there is no
        # point in sending an e-mail - we can't without the inteface
        # being up - well, just exit.
        exit

fi

# debug line
# echo "we made it past the first test"

# now get the last known IP address
LASTIP=`/bin/cat /home/ghome/scripts/currentIP`

# echo "lastip $LASTIP"

# now test to see if the IP addresses match
if /usr/bin/test "$IPADDRESS" = "$LASTIP"
then

        # echo "we have the same ip address"
        # echo "last: $LASTIP current: $IPADDRESS"
        # do nothing, we have matching IP addresses
        # just exit
        exit    

else

        # echo "we do not have matching IPs"
        # echo "last: $LASTIP current: $IPADDRESS"
        
        # we do NOT have matching IP addresses so
        # we have to overwrite the currentIP file
        echo $IPADDRESS >/home/ghome/scripts/currentIP

        # get the hostname for the e-mail
        HOSTN=`/bin/hostname`

        # and get the time as well
        DANDT=`/bin/date`

        # and we have to notify Greg what has happened
        # create a file with the info we need to send
        # the email
        echo "$DANDT" >/tmp/$$
        echo "$HOSTN has changed IP addresses" >>/tmp/$$
        echo "IP was $LASTIP" >>/tmp/$$
        echo "IP is now $IPADDRESS" >>/tmp/$$

# now mail the file
/bin/mail -s "$HOSTN has changed IP Addresses" [EMAIL PROTECTED] </tmp/$$


        # now remove /tmp/$$
        /bin/rm /tmp/$$

        # and we're done
        exit

fi

_______________________________________________
TriLUG mailing list
   http://www.trilug.org/mailman/listinfo/trilug
TriLUG Organizational FAQ:
   http://www.trilug.org/faq/TriLUG-faq.html

Reply via email to