发表于: 2018-03-24 23:58:31

2 965


今天已完成:在网上搜到了几篇关于PYTHON和NGINX日志的文章。发现一个或许能用的脚本(如下)。预计应该可以有助于任务1的完成。

#!/usr/bin/env python
#-*-coding:utf8-*-
"""
分析Nginx等Web应用访问IP信息 并将其访问数量从大到小排序
"""
ip_list=[] #定义空列表 所有的访问IP放置在该列表中
ip_count={}#定义一个空字典 将IP和访问的次数放置到该字典中
with  open("/home/admin/output/nginx/logs/portal_ssl.access.log","r")  as ngfile: #打开日志文件
for line in   ngfile:
#print(line.split())  调试信息
ip_list.append(line.split()[0]) #用split分割字符串获取到列表line.split()[0] 每行的IP地址
for count in set(ip_list):   #将ip_list去重
ip_number=ip_list.count(count)  #统计每个IP出现的次数
ip_count.setdefault(count,ip_number) #将IP以及数量更新到字典
ip_count_new=sorted(ip_count.items(),key=lambda d:d[1],reverse=True) #使用lambda函数 对其重新排序构建新字典
for eachip  in ip_count_new:
print(eachip)


明天待完成:

今天已经对该脚本进行了研究学习,并试着进行修改,但无法达到预期效果,打算明天继续攻克这一问题,以便能够成功在另一文件中生成ip的统计数量。


遇到的问题:

因为脚本内容过于丰富,一些内容无法理解,于是对不必要的部分修改如下:

#!/usr/bin/env python
#-*-coding:utf8-*-
"""
分析Nginx等Web应用访问IP信息 并将其访问数量从大到小排序
"""
ip_list=[] #定义空列表 所有的访问IP放置在该列表中
ip_count={}#定义一个空字典 将IP和访问的次数放置到该字典中
with  open("/home/admin/output/nginx/logs/portal_ssl.access.log","r")  as ngfile: #打开日志文件
for line in   ngfile:
#print(line.split())  调试信息
ip_list.append(line.split()[0]) #用split分割字符串获取到列表line.split()[0] 每行的IP地址
for count in set(ip_list):   #将ip_list去重
ip_number=ip_list.count(count)  #统计每个IP出现的次数
ip_count.setdefault(count,ip_number) #将IP以及数量更新到字典
ip_count_new=sorted(ip_count.items(),key=lambda d:d[1],reverse=True) #使用lambda函数 对其重新排序构建新字典
for eachip  in ip_count_new:

print(eachip)

file = open("log.txt","w")#能够成创建LOG.TXT文件,但不会输入相应内容

file.write(eachip)



尽管像期待的那样生成了一个log.txt,但是里面没有任何内容。


掌握知识点:

在搜索脚本的过程中意外听到了有关DEF代码的问题,于是进行搜索,大致了解了如何通过DEF写函数。已能够完成很简单的函数编写,对这一问题有了大致的认识。

(如下:)

def print_hello(name):
print('hello world!',name)

print_hello('paul')




返回列表 返回列表
评论

    分享到