External IP (shell)

Moderators: digital, horus

External IP (shell)

Postby analyzer on 01 May 2008, 20:42

This script could be used easily with conky or whatever you want !

Code: Select all
#!/bin/bash
#ExternalIP
#
#USAGE: ExternalIP <interface>
#

#1 hour cache-validity
TIMEVALID="3600"

#Saved IP directory
SAVEDIR="/tmp/"

#Connect timeout
CONTIMEOUT=10

[[ $# -ne 1 && $# -ne 2 ]] && echo "ERROR(1)" && exit 1

IFACE=$1

[ -e ${SAVEDIR}ip${IFACE} ] && [ ! -w ${SAVEDIR}ip${IFACE} ] && echo "ERROR(2)" && exit 2
[ $# -eq 2 ] && [ $2 = "--force" ] && rm ${SAVEDIR}ip${IFACE}

if [ `ifconfig $IFACE | grep -c "UP"` != "0" ]; then

        DATENOW=`date +%s`
        if [ -e ${SAVEDIR}ip${IFACE} ]; then
                DATEFILE=`stat -c "%Y" ${SAVEDIR}ip${IFACE}`
        else
                DATEFILE=0
        fi

        DIFFTIME=$(($DATENOW - $DATEFILE))

        if [ $DIFFTIME -le $TIMEVALID ]; then
                cat ${SAVEDIR}ip${IFACE} && echo "(${DIFFTIME})"
        else
                EXTERNIP=`curl http://www.whatismyip.com/automation/n09230945.asp --interface $IFACE --connect-timeout $CONTIMEOUT 2> /dev/null`
                if [ -z $EXTERNIP ]; then
                        echo "N/A"
                        echo -n "N/A*" > ${SAVEDIR}ip${IFACE}
                else
                        echo "$EXTERNIP"
                        echo -n "$EXTERNIP*" > ${SAVEDIR}ip${IFACE}
                        logger -t $0 -i -p user.info "IP for interface $IFACE is $EXTERNIP."
                fi
        fi
else
        echo "OFF"
        #echo -n "OFF*" > ${SAVEDIR}ip${IFACE}
        [ -e ${SAVEDIR}ip${IFACE} ] && rm ${SAVEDIR}ip${IFACE}
fi
[ -w ${SAVEDIR}ip${IFACE} ] && chmod 666 /tmp/ip* 2> /dev/null

exit 0
analyzer
Administrateur
Administrateur
 
Posts: 27
Joined: 22 Mar 2005, 19:37

Return to General

Who is online

Users browsing this forum: No registered users and 2 guests

cron