Skip to content

Instantly share code, notes, and snippets.

@ruehowl
Created December 27, 2018 18:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ruehowl/539edbd3e43c9bff22a629193dba262d to your computer and use it in GitHub Desktop.
Save ruehowl/539edbd3e43c9bff22a629193dba262d to your computer and use it in GitHub Desktop.
fetch logs
from fabric import Connection
from invoke import task
import dns.resolver
import ipaddress
import sys
@task
def Mpw(cnt,domain):
print "MX records for {}".format(domain)
print find_host(domain,MX=True)
@task
def drmailforwardpostfix(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "drmailforwardpostfix"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def inboundcmfilter(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "inboundcmfilter"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def inboundopendkim(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "inboundopendkim"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def inboundpostfix(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "inboundpostfix"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def inboundratelmtd(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "inboundratelmtd"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def infraopenresty(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "infraopenresty"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def mailforwardcmfilter(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "mailforwardcmfilter"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def mailforwardpostfix(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "mailforwardpostfix"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def mailforwardpostsrsd(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "mailforwardpostsrsd"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def mailforwardratelimitd(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "mailforwardratelimitd"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def mailproxydovecot(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "mailproxydovecot"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def openxchangedoccnvrt(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "openxchangedoccnvrt"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def openxchangedovecot(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "openxchangedovecot"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def outbounddovecotsasl(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "outbounddovecotsasl"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def outboundopendkim(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "outboundopendkim"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def outboundpostfix(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "outboundpostfix"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
@task
def outboundratelmtd(cnt,colo='aus',list=False,date=None,keyword=None):
logName = "outboundratelmtd"
if list:
get_dates(colo,logName)
if keyword is not None:
get_log(colo,logName,keyword,date)
def get_dates(colo,logName):
try:
Connection("kafka1.tx1.mailhostbox.com").run("ls -al /kafkalogs/"+colo+"/"+logName+"* | awk -F \".\" '{print $2}' | sort | uniq")
except Exception as e:
print "Could not find any dates",e
return None
def get_log(colo,logName,keyword,date):
try:
Connection("kafka1.tx1.mailhostbox.com").run("zgrep {} /kafkalogs/{}/{}.{}*".format(keyword,colo,logName,date))
except:
print "Could not find logs"
return None
def run_cmd(host,CMDs):
results = []
with Connection(host) as cxn:
for cmd in CMDs:
try:
results.append(cxn.sudo(cmd, hide=True))
except Exception as e:
results.append(None)
return results
def find_host(domain,A=False, MX=False):
ptr=[]
myResolver = dns.resolver.Resolver()
myResolver.nameservers = ['8.8.8.8', '8.8.4.4']
if is_ip(domain):
IP = domain
if A:
return IP
else:
try:
resp = myResolver.query(domain ,'A')
except Exception as e:
return None
if A:
for ip in resp:
return str(ip)
if MX:
try:
myAnswers = myResolver.query(domain, "MX")
for rdata in myAnswers:
ptr.append(str(rdata))
return ptr
except Exception as e:
print e
return None
else:
for ip in resp:
IP = ip
req = '.'.join(reversed(str(IP).split("."))) + ".in-addr.arpa"
try:
myAnswers = myResolver.query(req, "PTR")
for rdata in myAnswers:
ptr.append(str(rdata))
return ptr
except Exception as e:
print e
return None
def is_ip(ip_addr):
try:
ip = ipaddress.ip_address(unicode(ip_addr, "utf-8"))
return True
except:
return False
def beautify():
print "\n","+++"*10, "\n"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment