Python paramiko模块基本使用(一)

使用paramiko模块登录远程主机,对日志进行统计分析。

import paramiko

def batch_count(days, hours, ips, user, passwd, source_path, dest_path, port=22):
    for ip in ips:
        count(days, hours, ip, user, passwd, source_path, dest_path, port=22)

def count(days, hours, ip, username, password,source_path, dest_path, port=22):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(ip,port,user,passwd)
    num = []
    for day in days:
        cmd1 = "grep \"%s/May/2018:\" %s/access.log | grep \"404\" > %s/day%s.log" %(day, source_path, dest_path, day)
        print cmd1
        stdin, stdout, stderr = ssh.exec_command(cmd1)
        tmp = []
        for hour in hours:
            cmd2 = "grep \"%s/May/2018:%s\" %s/day%s.log |wc -l" %(day, hour, dest_path, day)
            print cmd2
            stdin, stdout, stderr = ssh.exec_command(cmd2)
            out = stdout.readline().strip()
            tmp.append(out)
        num.append(tmp)
    draw(num, days, hours, ip)
    output(num, days, hours, ip)

def draw(table, days, hours, ip):
    print ip
    print '   ',
    for i in hours:
        print '%6s' %i ,
    print '%6s' %'sum' ,
    print ''
    for i in range(len(days)):
        print 'D%s' % days[i] ,
        sum = 0
        for j in range(len(hours)):
            sum = sum + int(table[i][j].encode("utf-8"))
            print '%6s' % table[i][j] ,
        print '%6d' % sum,
        print ""

def output(table,days,hours,ip):
    with open('./count.log','aw') as f:
        f.write('%s\n' % ip)
        f.write('%5s' % '')
        for i in hours:
            f.write('%6s' % i)
        f.write('%6s' % 'sum')
        f.write("\n")
        for i in range(len(days)):
            f.write('day%s' % days[i])
            sum = 0
            for j in range(len(hours)):
                sum = sum + int(table[i][j].encode("utf-8"))
                f.write('%6s' % table[i][j])
            f.write('%6d' % sum)
            f.write("\n")

if __name__ == '__main__':
    days = ['04','05','06']
    hours = ['10','11','12','13','14','15','16','17','18']
    ips = ['132.121.89.65','132.121.89.66']
    user = 'opan'
    passwd = '1*p%N0z9'
    source_path = '/data1/logs/nginx'
    dest_path = '/home/opan'
    batch_count(days, hours, ips, user, passwd, source_path, dest_path, port=22)

 

posted @ 2018-05-22 10:50  那年花开月正圆  阅读(1237)  评论(0编辑  收藏  举报