我试图解析linux终端运行dumpcap输出的文件名,以便自动将其附加到电子邮件中。这是一个较大的脚本中的相关函数。proc1
、stdout
和{""
,DUMPCAP
是命令行字符串dumpcap -a duration:300 -b duration:2147483647 -c 500 -i 1 -n -p -s 2 -w test -B 20
def startdump():
global DUMPCAP
global dumpdirectory
global proc1
global stdout
global eventfile
setDumpcapOptions()
print("dumpcap.exe = " + DUMPCAP)
os.chdir(dumpdirectory)
#subprocess.CREATE_NEW_CONSOLE
proc1 = subprocess.Popen(DUMPCAP, shell=True, stdout=subprocess.PIPE)
for line in proc1:
if 'File: ' in line:
parsedfile = line.split(':')
eventfile = parsedfile[1]
if dc_mode == "Dumpcap Only":
proc1.communicate()
mail_man(config_file)
return proc1
def startevent():
global EVENT
global proc1
global eventfile
setEventOptions()
print(EVENT)
# subprocess.CREATE_NEW_CONSOLE
proc2 = subprocess.Popen(EVENT, shell=True, stdout=subprocess.PIPE)
if dc_mode == "Dumpcap+Event" or dc_mode == "Trigger" or dc_mode == "Event Only":
proc2 = proc1.communicate()
mail_man(config_file)
return proc2
我一直存在的问题是,我不知道如何从dumpcap
的输出中解析文件名。不管我做什么,它都会从输出中解析""
。我很抱歉,如果这似乎是没有听到。我已经开始自学python和linux一个月了,文档在网上简洁易懂。在
我应该创建一个函数来解析dumpcap输出中的eventfile,还是直接在脚本中执行?我真的不知所措。我也不确定dumpcap是如何存储其输出的。在
终端中dumcap的输出为:
^{pr2}$行File: ...
包含由dumpcap
保存的pcap
文件的随机生成的名称。我正试图从终端解析该行,以获取File:
设置为变量后的所有内容,但常规方法split
似乎不起作用
它给出的另一个错误是Popen
不能被索引
Dumpcap输出到它的stderr,而不是stdout。所以我设法将stderr重定向到一个txt文件,然后我可以解析它。在
看起来基本上你需要一个regexp。在
更新:一个读取管道stdout的最小完整示例;希望这有帮助。在
^{pr2}$相关问题 更多 >
编程相关推荐