Automatic Updates for MaxMind GeoIP Databases

Linux specific questions/information are gathered here. The main thrust of topics are applied to Centos/RedHat(RH)/Debian/Ubuntu/Gentoo distributives

Automatic Updates for MaxMind GeoIP Databases

Postby lik » Sun Oct 16, 2011 3:01 pm

Automatic Updates for MaxMind GeoIP free Databases:

1. Use official MaxMind GeoIP Update program. GeoIP updates require an active GeoIP subscription.
Can find more information at http://dev.maxmind.com/geoip/geoipupdate/

2. Manual download of free (*lite* in terms of MaxMind) databases:
geoipupdate.sh (v4):
Code: Select all
#!/bin/sh

GEOIP_MIRROR="https://geolite.maxmind.com/download/geoip/database"
GEOIPDIR=/usr/share/GeoIP
TMPDIR=

DATABASES="GeoLiteCity GeoLiteCountry/GeoIP asnum/GeoIPASNum asnum/GeoIPASNumv6 GeoIPv6 GeoLiteCityv6-beta/GeoLiteCityv6"

if [ "${1}" = -f ] || [ "${1}" = --force ]; then
        force=true
fi

if [ -d "${GEOIPDIR}" ]; then
        cd $GEOIPDIR
        if [ -n "${DATABASES}" ]; then
                TMPDIR=$(mktemp -d geoipupdate.XXXXXXXXXX)

                echo "Updating GeoIP databases..."

                for db in $DATABASES; do
                        fname=$(basename $db)

                        if [ -f "${GEOIPDIR}/${fname}.dat" ] || [ ${force} ]; then
                                wget --no-verbose -t 3 -T 60 \
                                        --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0" \
                                        "${GEOIP_MIRROR}/${db}.dat.gz" \
                                        -O "${TMPDIR}/${fname}.dat.gz"
                                if [ $? -eq 0 ]; then
                                        gunzip -fdc "${TMPDIR}/${fname}.dat.gz" > "${TMPDIR}/${fname}.dat"
                                        mv "${TMPDIR}/${fname}.dat" "${GEOIPDIR}/${fname}.dat"
                                        chmod 0644 "${GEOIPDIR}/${fname}.dat"
                                        case ${fname} in
                                                GeoLite*) ln -sf ${fname}.dat `echo ${fname} | sed 's/GeoLite/GeoIP/'`.dat ;;
                                        esac
                                fi
                        fi
                done
                [ -d "${TMPDIR}" ] && rm -rf $TMPDIR
        fi
fi

geoipupdate.sh (v3):
Code: Select all
#!/bin/sh
# TODO: Test if exist (-h or -L) --> create symbolic link if not
# GeoIPCityv6.dat -> GeoLiteCityv6.dat
# GeoIPCity.dat -> GeoLiteCity.dat
 

GEOIP_MIRROR="https://geolite.maxmind.com/download/geoip/database"
GEOIPDIR=/usr/share/GeoIP
TMPDIR=

DATABASES="GeoLiteCity GeoLiteCountry/GeoIP asnum/GeoIPASNum asnum/GeoIPASNumv6 GeoIPv6 GeoLiteCityv6-beta/GeoLiteCityv6"

if [ "${1}" = -f ] || [ "${1}" = --force ]; then
   force=true
fi

if [ -d "${GEOIPDIR}" ]; then
        cd $GEOIPDIR
        if [ -n "${DATABASES}" ]; then
                TMPDIR=$(mktemp -d geoipupdate.XXXXXXXXXX)

                echo "Updating GeoIP databases..."

                for db in $DATABASES; do
                        fname=$(basename $db)

                        if [ -f "${GEOIPDIR}/${fname}.dat" ] || [ ${force} ]; then
                                wget --no-verbose -t 3 -T 60 \
                                        --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0" \
                                        "${GEOIP_MIRROR}/${db}.dat.gz" \
                                        -O "${TMPDIR}/${fname}.dat.gz"
                                if [ $? -eq 0 ]; then
                                        gunzip -fdc "${TMPDIR}/${fname}.dat.gz" > "${TMPDIR}/${fname}.dat"
                                        mv "${TMPDIR}/${fname}.dat" "${GEOIPDIR}/${fname}.dat"
                                        chmod 0644 "${GEOIPDIR}/${fname}.dat"
                                fi
                        fi
                done
                [ -d "${TMPDIR}" ] && rm -rf $TMPDIR
        fi
fi

geoipupdate.sh (v2):
Code: Select all
#!/bin/sh

GEOIP_MIRROR="http://geolite.maxmind.com/download/geoip/database"
GEOIPDIR=/usr/share/GeoIP
TMPDIR=

DATABASES="GeoLiteCity GeoLiteCountry/GeoIP asnum/GeoIPASNum asnum/GeoIPASNumv6 GeoIPv6 GeoLiteCityv6-beta/GeoLiteCityv6"

if [ -d "${GEOIPDIR}" ]; then
        cd $GEOIPDIR
        if [ -n "${DATABASES}" ]; then
                TMPDIR=$(mktemp -d geoipupdate.XXXXXXXXXX)

                echo "Updating GeoIP databases..."

                for db in $DATABASES; do
                        fname=$(basename $db)

                        if [ -f ${GEOIPDIR}/${fname}.dat ]; then
                                wget --no-verbose -t 3 -T 60 \
                                        --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0" \
                                        "${GEOIP_MIRROR}/${db}.dat.gz" \
                                        -O "${TMPDIR}/${fname}.dat.gz"
                                if [ $? -eq 0 ]; then
                                        gunzip -fdc "${TMPDIR}/${fname}.dat.gz" > "${TMPDIR}/${fname}.dat"
                                        mv "${TMPDIR}/${fname}.dat" "${GEOIPDIR}/${fname}.dat"
                                        chmod 0644 "${GEOIPDIR}/${fname}.dat"
                                fi
                        fi
                done
                [ -d "${TMPDIR}" ] && rm -rf $TMPDIR
        fi
fi

geoipupdate.sh (v1):
Code: Select all
#!/bin/sh

GEOIP_MIRROR="http://geolite.maxmind.com/download/geoip/database"
GEOIPDIR=/usr/share/GeoIP
TMPDIR=

DATABASES="GeoLiteCity GeoLiteCountry/GeoIP asnum/GeoIPASNum GeoIPv6"

if [ -d "${GEOIPDIR}" ]; then
        cd $GEOIPDIR
        if [ -n "${DATABASES}" ]; then
                TMPDIR=$(mktemp -d geoipupdate.XXXXXXXXXX)

                echo "Updating GeoIP databases..."

                for db in $DATABASES; do
                        fname=$(basename $db)

                        wget --no-verbose -t 3 -T 60 "${GEOIP_MIRROR}/${db}.dat.gz" -O "${TMPDIR}/${fname}.dat.gz"
                        gunzip -fdc "${TMPDIR}/${fname}.dat.gz" > "${TMPDIR}/${fname}.dat"
                        mv "${TMPDIR}/${fname}.dat" "${GEOIPDIR}/${fname}.dat"
                        chmod 0644 "${GEOIPDIR}/${fname}.dat"
                done
                [ -d "${TMPDIR}" ] && rm -rf $TMPDIR
        fi
fi

lik
Founder
Founder
 
Posts: 489
Joined: Wed Dec 15, 2010 3:21 am

Return to Linux specific

 


  • Related topics
    Replies
    Views
    Last post
cron