[tv] Un recup_sap en python pour remplacer le binaire recup_sap
On en profite pour mettre le résultat dans /usr/script/var/tv/ à la fois une version textuelle (similaire au fichier anciennement produit par le binaire recup_sap) et un pickle d'un dictionnaire python.
This commit is contained in:
parent
2dfcc35dfe
commit
37c77d88d0
1 changed files with 48 additions and 0 deletions
48
tv/recup_sap.py
Executable file
48
tv/recup_sap.py
Executable file
|
@ -0,0 +1,48 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
import socket
|
||||||
|
import struct
|
||||||
|
import time
|
||||||
|
import pickle
|
||||||
|
import os
|
||||||
|
|
||||||
|
MCAST_GRP = '224.2.127.254' # sap.mcast.net
|
||||||
|
MCAST_PORT = 9875
|
||||||
|
timeout=60
|
||||||
|
path='/usr/scripts/var/tv/sap.txt'
|
||||||
|
pickeled_path='/usr/scripts/var/tv/sap.pickel'
|
||||||
|
|
||||||
|
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
|
||||||
|
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||||
|
sock.bind(('', MCAST_PORT))
|
||||||
|
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)
|
||||||
|
|
||||||
|
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
|
||||||
|
|
||||||
|
service={}
|
||||||
|
|
||||||
|
start=time.time()
|
||||||
|
while True:
|
||||||
|
msg=sock.recv(10240).split('\r\n')
|
||||||
|
# print msg
|
||||||
|
s=None
|
||||||
|
ip=None
|
||||||
|
for line in msg[:-1]:
|
||||||
|
(tag, value) = line.split('=', 1)
|
||||||
|
if tag=='s':
|
||||||
|
s=value
|
||||||
|
if tag=='c':
|
||||||
|
ip=value.split(' ')[2].split('/')[0]
|
||||||
|
service[s]=ip
|
||||||
|
print "%s: %s" % (s, ip)
|
||||||
|
if time.time() - start > timeout:
|
||||||
|
break
|
||||||
|
|
||||||
|
f=open(path, 'w')
|
||||||
|
l=service.items()
|
||||||
|
l.sort()
|
||||||
|
for (name, ip) in l:
|
||||||
|
f.write("%s:%s\n" % (name, ip))
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
pickle.dump(service, open(pickeled_path + '.tmp', 'w'))
|
||||||
|
os.rename(pickeled_path + '.tmp', pickeled_path)
|
Loading…
Add table
Add a link
Reference in a new issue