云深处 发表于 2017-12-23 16:37:56

nginx访问日志获取访问前10的url

#!/usr/bin/env python  
#
coding=utf-8  
#
author hexm@2016-12-07  

  

  
import sys
  
import datetime
  
import paramiko
  
import configparser
  

  

  
class Command(object):
  

  def __init__(self, host, domain, startime, endtime):
  self.getconf()
  self.host = host
  self.domain = domain
  self.command = '''awk \'/%s/, /%s/\' %s | grep \'^%s\' | awk \'{print $8}\' |awk -F\"?\" \'{print $1}\' | awk \'{access[$1]++} END {for (A in access){print access, A}}\' | sort -nr | head ''' % (startime, endtime, self.logfile, self.domain)
  self.username = 'root'
  self.port = 22
  self.private_key = paramiko.RSAKey.from_private_key_file(self.id_rsa)
  

  def mostrequests(self):
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh.connect(hostname=self.host, port=self.port, username=self.username, pkey=self.private_key)
  stdin, stdout, stderr = ssh.exec_command(self.command)
  ret, err = stdout.read(), stderr.read()
  result = ret if ret else err
  ssh.close()
  return result.decode()
  

  def getconf(self):
  config = configparser.ConfigParser()
  config.read('log.conf', encoding='utf-8')
  self.logfile = config.get('log', 'log_file') + ' ' + config.get('log', 'log_file') + '-' + datetime.datetime.now().strftime('%Y%m%d')
  self.id_rsa = config.get('id_rsa', 'id_rsa')
  

  

  
if __name__ == '__main__':
  

  h_dict = { 'passport.51.com':'10.80.2.173', 'www.51.com':'10.80.2.174', 'gameapi.51.com':'10.80.2.138', 'game.51.com':'10.80.2.139', 'home.51.com':'10.80.2.170'}
  domain = sys.argv
  host = h_dict
  startime, endtime = sys.argv
  log = Command(host, domain, startime, endtime)
  

  ret = log.mostrequests()
  print ret
页: [1]
查看完整版本: nginx访问日志获取访问前10的url