Python脚本查看" netstat"定期命令并打印不同输出的任何变化?

时间:2015-10-09 10:39:31

标签: python linux netstat

我正在编写一个python脚本来查看" netstat"定期输出命令并将其保存到文件中。如果netstat的不同输出之间有任何端口更改,请将这些行更改为另一个文件并保存。

netstat命令的示例输出:

tcp 0 77 100.73.96.7:56855 31.13.79.246:https LISTEN
tcp 0 32 100.73.96.7:46551 68.232.44.121:https LISTEN

tcp 0 1 100.73.96.7:60538 198.252.206.16:http LISTEN
tcp 0 77 100.73.96.7:51728 103.31.6.32:https LISTEN

我的脚本是这样的: 我能够将netstat命令期刊打印到文件中。

import subprocess
import time,threading

def myfun():
    p = subprocess.Popen(["netstat", "-at"], stdout=subprocess.PIPE)
    out = p.stdout.read()
    print out
    myfile = open("myfile","a")
    myfile.write(out)
    myfile.close()
    print(time.ctime())
    threading.Timer(10,myfun).start()
myfun()

如何进一步处理。有人帮忙

1 个答案:

答案 0 :(得分:0)

我不确定netstat的哪些不同输出在你的问题中意味着什么。它可能意味着每次运行中的输出不同或者周期性运行的输出不同。无论是什么,您都可以根据要求进行修改。

第一步是逐行分割输出,然后逐字分割。使用Python拆分方法:

`out_line = out.split("\n")`

out_line将是一个列表,其中每行netstat输出作为列表中的条目。现在你可以遍历这个out_list了。每次迭代都将处理netstat输出的一行



    for line in out_line:
        line_list = line.split()
        WRITE YOUR PROGRAM HERE

将每一行拆分为单词后,您可以选择将它们存储为列表列表,以便内部列表包含单词,每个完整的内部列表组成一行。像这样:


     [
    [tcp, 0, 77, 100.73.96.7:56855, 31.13.79.246:https, LISTEN],
    [tcp, 0, 32, 100.73.96.7:46551, 68.232.44.121:https, LISTEN]
    ]

比较引用端口号的索引,如果不同则写入另一个文件。我相信那部分是微不足道的