Python 定期查看 "netstat" 命令并在不同输出中打印任何更改的脚本?

Python Script to view "netstat" command periodically and print any changes in different outputs?

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

netstat 命令的示例输出:

tcp 0 77 100.73.96.7:56855 31.13.79.246:https 收听
tcp 0 32 100.73.96.7:46551 68.232.44.121:https 收听

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

我的脚本是这样的: 我能够将 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()

如何进行下一步。有人帮忙

我不确定 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]
    ]

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