handle many addresses per interface
This commit is contained in:
@@ -6,7 +6,9 @@ import time, os, sys
|
|||||||
SLEEP=60
|
SLEEP=60
|
||||||
SRV="colo2.wapanafa.org"
|
SRV="colo2.wapanafa.org"
|
||||||
DBG=0
|
DBG=0
|
||||||
HBC="/home/andreas/bin/hbc"
|
|
||||||
|
home=os.environ.get('HOME','/var/tmp')
|
||||||
|
HBC="%s/bin/hbc" % home
|
||||||
|
|
||||||
IFS=[]
|
IFS=[]
|
||||||
f=os.popen('/sbin/ifconfig -a 2>/dev/null', 'r')
|
f=os.popen('/sbin/ifconfig -a 2>/dev/null', 'r')
|
||||||
@@ -28,20 +30,23 @@ while 1:
|
|||||||
|
|
||||||
for I in IFS:
|
for I in IFS:
|
||||||
f=os.popen('/sbin/ifconfig %s 2>/dev/null' % I, 'r')
|
f=os.popen('/sbin/ifconfig %s 2>/dev/null' % I, 'r')
|
||||||
|
ifaddrs=[]
|
||||||
for l in f.readlines():
|
for l in f.readlines():
|
||||||
r=l.split()
|
r=l.split()
|
||||||
if DBG > 1: print "x2", r
|
if DBG > 1: print "x2", r
|
||||||
if len(r) == 0 or r[0] != 'inet':
|
if len(r) == 0 or (r[0] != 'inet' and r[0] != 'inet6'):
|
||||||
continue
|
continue
|
||||||
if r[1].find('addr:') == 0:
|
if r[1].find('addr:') == 0:
|
||||||
iaddr=r[1][5:]
|
ifaddr=r[1][5:]
|
||||||
else:
|
else:
|
||||||
iaddr=r[1]
|
ifaddr=r[1]
|
||||||
if iaddr != addrs[I]:
|
ifaddrs.append(ifaddr)
|
||||||
msg='%s -m "ifadd %s %s" %s' % (HBC, I, iaddr, SRV)
|
|
||||||
|
if ifaddrs != [] and ifaddrs != addrs[I]:
|
||||||
|
msg='%s -m "ifadd %s %s" %s' % (HBC, I, ",".join(ifaddrs), SRV)
|
||||||
if DBG: print msg
|
if DBG: print msg
|
||||||
else: os.system(msg)
|
else: os.system(msg)
|
||||||
addrs[I]=iaddr
|
addrs[I]=ifaddrs
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
time.sleep(SLEEP)
|
time.sleep(SLEEP)
|
||||||
|
|||||||
Reference in New Issue
Block a user