我正在编写一个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()
如何进一步处理。有人帮忙
答案 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] ]
比较引用端口号的索引,如果不同则写入另一个文件。我相信那部分是微不足道的