zoukankan      html  css  js  c++  java
  • 统计nginx单个IP访问日志并获取IP来源

    #!/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	%s
    " %(i,source)
        f.write(char)
      f.close()
      os.system(send_mail) 
      return
    
    if __name__ == '__main__':
      run_cmd()
  • 相关阅读:
    ege demo
    Easy Graphics Engine vs2015使用
    c++ demo
    leetcode 13 -> Roman to Integer
    leetcode 12 -> Integer to Roman
    12. Integer to Roman
    leetcode 9 -> Palindrome Number
    8. String to Integer (atoi)
    获取字符串中长度最长的回文字符串
    leetcode 5-> Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/dukuan/p/7885680.html
Copyright © 2011-2022 走看看