If someone is intrested here is second (undebugged) incarnation of
my hostnames updater script:
#!/bin/sh
#verze 2.0.0_2013-05-31
lock=/var/run/hostnames-updater.pid
shmm="/dev/shm/hosts"
clean () {
rm $lock
rm $shmm
}
trap clean SIGHUP SIGINT SIGTERM
/bin/echo $$ > $lock
while /bin/true
tst(){
x=0
if $3 = $(/usr/bin/ssh-keyscan -p $2 $5 2>/dev/null|/bin/sed
's/.*\ ssh-.*\ //g'|/usr/bin/whirpooldeep)
then
x=$5
elif /usr/bin/test $1 -gt 2
then
if $3 = $(/usr/bin/ssh-keyscan -p $2 $6
2>/dev/null|/bin/sed 's/.*\ ssh-.*\ //g'|/usr/bin/whirlpooldeep)
then
x=$6
else
x=$4
fi
else
x=$4
fi
}
#host testing line is as folows
#tst <number of addresses to try - some hosts do have wl and eth
interface)> \
#<output of ssh-keyscan -p <port> <address>
2>/dev/null|/bin/sed 's/.*\ ssh-.*\
//g'|/usr/bin/whirlpooldeep> \
#<fallback address - eg. vpn one> <address 2>
<address n>
####################host 1
tst <address count n> <port> <hash> <address 1
> ... <address n> 2>&1 >/dev/null
host1=$x
#lets create hosts file
/bin/echo "# /etc/hosts: Local Host Database
#
# This file describes a number of aliases-to-address mappings for
the for
# local hosts that share this file.
#
# In the presence of the domain name service or NIS, this file may
not be
# consulted at all; see /etc/host.conf for the resolution order.
#
# IPv4 and IPv6 localhost aliases
127.0.0.1 $(hostname).local $(hostname) localhost
::1 localhost
#
# Imaginary network.
$host1 host1
# Last update $(date --rfc-3339)
#
#
# According to RFC 1918, you can use the following IP networks for
private
# nets which will never be connected to the Internet:
#
# 10.0.0.0 - 10.255.255.255
# 172.16.0.0 - 172.31.255.255
# 192.168.0.0 - 192.168.255.255
#
# In case you want to be able to connect directly to the Internet
(i.e. not
# behind a NAT, ADSL router, etc...), you need real official
assigned
# numbers. Do not try to invent your own network numbers but
instead get one
# from your network provider (if any) or from your regional registry
(ARIN,
# APNIC, LACNIC, RIPE NCC, or AfriNIC.)
#
" > $shmm
/bin/mv $shmm /etc/hosts
/usr/bin/sleep 300
done
I hope I helps someone
S