[bglug] Script per mappare IP dinamici

Manuel manetta manetta@mediacom.it
Mer 4 Lug 2007 12:32:00 CEST


Ciao a tutti,

io ho questa esigenza: una serie di server da gestire che hanno
accesso ad internet con IP dinamico. Io dispongo di un IP statico e
non vorrei utilizzare servizi tipo dyndns per poter accedere in SSH.

L'idea che mi è venuta in mente è un piccolo script, stupidissimo, ma
ha una sua utilità. Mi piacerebbe avere qualche suggerimento su come
migliorarlo.

Da lato cliente ho uno script in cron.hourly tipo questo:

#!/bin/bash
curl http://MIO.INDIRIZZO.IP.STATICO/cliente/nomecliente > /dev/null
# --- END SCRIPT ---

in questo modo mi trovo nei log di apache qualcosa tipo:

indirizzo.ip.remoto.dinamico - - [04/Jul/2007:12:00:01 +0200] "GET
/cliente/nomecliente HTTP/1.1" 401 401 "-"

a questo punto io ho un file clienti contenente un elenco dei nomi che
troverò nel file di log di apache (ovviamente, identico al nomecliente
nello script di curl) e lo script che gira sul mio server è questo:
(ho una copia di /etc/hosts senza alcun cliente dinamico, ma solo
macchine locali o con ip statico, che si chiama hosts.base)

#!/bin/bash
cat /dev/null > /etc/hosts
cp /etc/hosts.base /etc/hosts

for nome in $(cat clienti); do
        cat /var/log/apache2/access.log | grep $nome | sed 's/\// /g'
| awk '{ print $1 " " $10 }' | tail -n 1 >> /etc/hosts
done
# --- END SCRIPT ---

la riga che inizia con il cat server per darmi in output una coppia IP
NOMEMACCHINA formattato come piace al file hosts

Beh, così sembra funzionare.
Idee???

Grazie e ciao
Manuel


Maggiori informazioni sulla lista bglug