#!/usr/bin/env python
#coding=utf-8
import requests
from urllib2 import urlopen
# import lxml.html
from bs4 import BeautifulSoup
import subprocess
import sys,os
reload(sys) 
sys.setdefaultencoding('utf-8')
# log file
logfile = "./access.log"
#result = "/tmp/result"
# ip white list
white_list = "8.8.8.8"
# notify list
mail_list = "xxx@sina.com xxx@xxx.com"
cmd = """
awk '{ip[$1]++}END{for (k in ip){print ip[k],k}}' %s | sort -rn | head -20 | grep -v %s
""" %(logfile, white_list)
send_mail = 'mail -s "Walrus Rest Log Statistics" %s < /tmp/check' %mail_list
label = "div"
item = "class"
reg = "well"

def get_source(ip):
  url = "http://ip.chinaz.com/%s" %ip
  # BeautifulSoup parser
  html = urlopen(url)
  bsObj = BeautifulSoup(html,"html.parser")
  Check_result = bsObj.findAll("span",{"class":"Whwtdhalf w50-0"})
  # get source
  for i in Check_result:
    if "IP" in i.get_text():
        pass
    else:
        ip_source = i.get_text()
  return ip_source
def run_cmd():
  f = open("/tmp/check", 'w')
  # start command
  command_result = subprocess.Popen(cmd,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
  #temp = command_result.stdout.read()
  for i in command_result.stdout:
    ip = i.split()[1]
    source = get_source(ip)
    char = "%s\t%s\n" %(i,source)
    f.write(char)
  f.close()
  os.system(send_mail) 
  return

if __name__ == '__main__':
  run_cmd()

 

posted on 2017-11-23 16:44  杜先生的博客  阅读(2378)  评论(0编辑  收藏  举报