+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

有什么方法可以优化/适当优化此<50行脚本?

发布于2021-02-23 10:42     阅读(2762)     评论(0)     点赞(6)     收藏(1)


0

1

2

3

4

5

我仍在学习python,因此我决定参与的第一个项目之一是对大型nmap日志进行排序,拉出OPEN端口并将其转储为IP:Port格式的单独文本文件。它可以工作,但是有没有更好的方法可以写呢?我最终得到的是:

import sys
import string

"""
Written 6/24/2011 to pull out OPEN ports of an nmap proxy scan
Command:
nmap 218.9-255.0-255.0-255 -p 8080,3128,1080 -M 50 -oG PLog3.txt
"""
if len(sys.argv) != 3:
    print 'Usage: python proxy.py <input file> <output file>'
    print 'nmap 218.1-255.0-255.0-255 -p 8080,3128,1080 -M 50 -oG PLog.txt'
    print 'Example: python ./proxy.py PLog.txt proxies.txt'
    sys.exit(1)

r = open(sys.argv[1], 'r')
o = open(sys.argv[2], 'w')

pat80 = '80/open/'
pat8080 = '8080/open'
pat3128 = '3128/open'

for curline in r.xreadlines():
    sift = string.split(curline, ' ')
    ip = sift[1]

if curline.find(pat3128) >= 0:
    curport = '3128'

elif curline.find(pat8080) >= 0:
    curport = '8080'

elif curline.find(pat80) >= 0:
    curport = '80'

else:
    curport = '100'
    pass


if (curport == '3128') or (curport == '8080') or (curport == '80'):
    o.write(ip + ':' + curport + '\n')
    print ip + ':' + curport

else:
    pass

解决方案


您可以像这样遍历文件。没有必要使用xreadlines()with确保r超出范围时关闭文件

with open(sys.argv[1], 'r') as r:
    for curline in r:
        sift = string.split(curline, ' ')
        ip = sift[1]

    ...

在元组中查找比链条更整洁 or

if curport in ('3128', '8080', '80'):

0

1

2

3

4

5

6

7

8



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/847905/4e83a8b1544faf425f28/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

6 0
收藏该文
已收藏

评论内容:(最多支持255个字符)