59 lines
1.1 KiB
Python
Executable File
59 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# Monitor Interfaces, send hb msg when add changes
|
|
import time
|
|
import os
|
|
|
|
SLEEP = 60
|
|
SRV = "colo2.wapanafa.org"
|
|
DBG = 0
|
|
|
|
home = os.environ.get('HOME', '/var/tmp')
|
|
HBC = "%s/bin/hbc" % home
|
|
|
|
IFS = []
|
|
f = os.popen('/sbin/ifconfig -a 2>/dev/null', 'r')
|
|
for l in f.readlines():
|
|
if len(l) > 1 and not l[0] in [' ', '\t']:
|
|
r = l.split()
|
|
if DBG:
|
|
print r
|
|
if r[0][-1] == ':':
|
|
r[0] = r[0][:-1]
|
|
if r[0][:2] == 'lo':
|
|
continue
|
|
IFS.append(r[0])
|
|
if DBG:
|
|
print IFS
|
|
addrs = {}
|
|
for I in IFS:
|
|
addrs[I] = ""
|
|
|
|
while 1:
|
|
|
|
for I in IFS:
|
|
f = os.popen('/sbin/ifconfig %s 2>/dev/null' % I, 'r')
|
|
ifaddrs = []
|
|
for l in f.readlines():
|
|
r = l.split()
|
|
if DBG > 1:
|
|
print "x2", r
|
|
if len(r) == 0 or (r[0] != 'inet' and r[0] != 'inet6'):
|
|
continue
|
|
if r[1].find('addr:') == 0:
|
|
ifaddr = r[1][5:]
|
|
else:
|
|
ifaddr = r[1]
|
|
ifaddrs.append(ifaddr)
|
|
|
|
if ifaddrs != [] and ifaddrs != addrs[I]:
|
|
msg = '%s -m "ifadd %s %s" %s' % (HBC, I, ",".join(ifaddrs), SRV)
|
|
if DBG:
|
|
print msg
|
|
else:
|
|
os.system(msg)
|
|
addrs[I] = ifaddrs
|
|
f.close()
|
|
|
|
time.sleep(SLEEP)
|