免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2522 | 回复: 4
打印 上一主题 下一主题

用Python查找IP和帐号 [复制链接]

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-04-15 06:20:00每日论坛发贴之星
日期:2016-04-15 06:20:0015-16赛季CBA联赛之八一
日期:2016-07-08 09:20:28操作系统版块每日发帖之星
日期:2016-08-03 06:20:002016科比退役纪念章
日期:2016-10-30 13:59:12
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-03 15:49 |只看该作者 |倒序浏览
文本内容如下:
192.168.100.125  UNKNOWN  w0100441  [03/Jun/2015:16:16:26 +0800] 226 119096 0.014
..........................
63.54.78.89         UNKNOWN  w0500465  [03/Sep/2015:16:16:26 +0800] 275 119098 0.019
..........................
61.30.89.6           UNKNOWN  kobe          [15/Oct/2015:09:15:35 +0800] 426 1109168 3.215
..........................
192.168.100.126  UNKNOWN  dingjunhui  [15/Mar/2016:09:15:35 +0800] 426 1109168 3.215
..........................
220.86.123.140    UNKNOWN  idenbo       [03/May/2016:09:41:27 +0800] 226 7068129 12.102

上面的文件是一个OS的登录日志,第一列是登录到服务器的客户端的IP地址,第三列是帐号,以w开头的是公司内网帐号,其余的均为外网帐号。192.168.100的为内网IP,其余的均为外网IP,我现在想要找出三个月内,以内网帐号和外网IP登录服务器的行(例如 63.54.78.89     UNKNOWN  w0500465),和以外网帐号和内网IP登录服务器的行(例如: 192.168.100.126  UNKNOWN  dingjunhui),用Python如何来实现?如果这里查找的时间是个变量,即找出四个月内,五个月内的信息(依次类推),用Python语言如何来写?

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-14 06:20:00每日论坛发贴之星
日期:2015-10-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-08 06:20:00
2 [报告]
发表于 2016-05-03 17:28 |只看该作者
本帖最后由 mswsg 于 2016-05-03 21:22 编辑

将代码保存为 filter_by_month.py,
python filter_by_month.py --input your_input_file -m 3 --output your_out_file

-m 3 几个月之前,比如3个月之前即03/Nov/2015之前的日志
  1. $ python data_time.py --input 1.txt -m 6 --output 1.out.txt
  2. You will find after this time 03/Nov/2015 21:17:40 line!
  3. $ head 1.out.txt
  4. 63.54.78.89         UNKNOWN  w0500465  [03/Sep/2016:16:16:26 +0800] 275 119098 0.019
  5. 192.168.100.126  UNKNOWN  dingjunhui  [15/Mar/2016:09:15:35 +0800] 426 1109168 3.215
复制代码
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-

  3. import sys
  4. import getopt
  5. from datetime import datetime
  6. import time
  7. from dateutil.relativedelta import relativedelta
  8. import re

  9. __author__ = 'shengwei ma'
  10. __author_email__ = 'shengweima@icloud.com'

  11. input_file = ""
  12. output_file = ""
  13. a = ""

  14. try:
  15.     opts, args = getopt.getopt(sys.argv[1:], "hm:", ["input=", "output="])
  16. except getopt.GetoptError as err:
  17.     print(str(err))
  18. for op, value in opts:
  19.     if op == "--input":
  20.         input_file = value
  21.     elif op == "-m":
  22.         a = int(value)
  23.     elif op == "--output":
  24.         output_file = open(value, 'w')
  25.     elif op == "-h":
  26.         print("python filter_by_month.py --input your_input_file -m 3 --output your_out_file")
  27.         sys.exit()

  28. months = datetime.now() + relativedelta(months=-a)
  29. month = months.strftime("%d/%b/%Y %H:%M:%S")
  30. print 'You will find after this time %s line!' % month

  31. with open(input_file, 'r') as f:
  32.     for num, line in enumerate(f):
  33.         if num % 2 == 0:
  34.             new_line = line.strip().split()
  35.             date = new_line[3].lstrip('[').split(':')
  36.             new_date = date[0] + ' ' + date[1] + ':' + date[2] + ':' + date[3]
  37.             timeArray_b = time.strptime(new_date, "%d/%b/%Y %H:%M:%S")
  38.             timeArray_a = time.strptime(month, "%d/%b/%Y %H:%M:%S")
  39.             if timeArray_b > timeArray_a:
  40.                 if new_line[0].startswith('192') and re.findall(r'[^w]', new_line[2]):
  41.                     output_file.write(line)
  42.                 elif new_line[2].startswith('w') and re.findall(r'[^192]', new_line[0]):
  43.                     output_file.write(line)

复制代码

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-04-15 06:20:00每日论坛发贴之星
日期:2016-04-15 06:20:0015-16赛季CBA联赛之八一
日期:2016-07-08 09:20:28操作系统版块每日发帖之星
日期:2016-08-03 06:20:002016科比退役纪念章
日期:2016-10-30 13:59:12
3 [报告]
发表于 2016-05-03 17:28 |只看该作者
回复 2# mswsg


    如何来做?

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-14 06:20:00每日论坛发贴之星
日期:2015-10-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-08 06:20:00
4 [报告]
发表于 2016-05-03 18:13 |只看该作者
那个日期, 月份怎么是英文,其他是数字,有点麻烦回复 3# 274920831


   

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-14 06:20:00每日论坛发贴之星
日期:2015-10-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-08 06:20:00
5 [报告]
发表于 2016-05-03 21:23 |只看该作者
答案放在二楼了回复 3# 274920831


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP