
via un locate-mac darcs-hash:20061004232244-f6463-70a9fb87f5ebac9a1cc6be3ce4e8c01dea30a991.gz
57 lines
1.7 KiB
Python
Executable file
57 lines
1.7 KiB
Python
Executable file
#! /usr/bin/env python
|
|
# -*- coding: iso-8859-15 -*-
|
|
|
|
# Ajout d'un whos aux mails d'arpwatch
|
|
# Auteur : Stéphane Glondu
|
|
# Licence : GPLv2
|
|
|
|
import sys, os, sre, smtplib
|
|
from commands import getstatusoutput
|
|
|
|
find_mac = sre.compile(r'[0-9A-Fa-f]{1,2}(?::[0-9A-Fa-f]{1,2}){5}')
|
|
|
|
def get_machine(mac):
|
|
commande = "/usr/scripts/gestion/whos.py --debug mac=%s" % mac
|
|
r, s = getstatusoutput(commande)
|
|
if r == 3:
|
|
# Aucun résultat trouvé
|
|
return ""
|
|
else:
|
|
# On supprime les couleurs
|
|
s = sre.sub('\x1b\[1;([0-9]|[0-9][0-9])m', '', s)
|
|
# On rajoute éventuellement le code de retour
|
|
if r != 0:
|
|
s = """
|
|
Code de retour anormal : %d
|
|
Commande : %s
|
|
%s
|
|
""" % (r, commande, s)
|
|
else:
|
|
s = "\n" + s + "\n"
|
|
#on recupere le resultat d'un locate
|
|
locate_mac = "/usr/scripts/gestion/tools/locate-mac.py %s" % mac
|
|
r2, s2 = getstatusoutput(locate_mac)
|
|
# on l'ajoute a la sortie
|
|
s = s+ "\n" + s2
|
|
|
|
return s
|
|
|
|
if __name__ == "__main__":
|
|
texte = sys.stdin.read()
|
|
# On récupère les destinataires dans les arguments (très ad hoc)
|
|
recipients = sys.argv[2].split(',')
|
|
# On complète le message
|
|
try:
|
|
macs = find_mac.findall(texte)
|
|
for mac in macs:
|
|
texte += get_machine(mac)
|
|
except:
|
|
# En cas d'exception, on envoie le traceback
|
|
import traceback
|
|
texte += '\n'
|
|
texte += '\n'.join(traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback))
|
|
texte += '\n-- \narpwatch_sendmail.py\n'
|
|
smtp = smtplib.SMTP()
|
|
smtp.connect()
|
|
smtp.sendmail("arpwatch@crans.org", recipients, texte)
|
|
smtp.quit()
|