Nifi中用于网络数据包捕获的Python脚本

Nifi中用于网络数据包捕获的Python脚本,python,apache-nifi,Python,Apache Nifi,我是nifi平台的新手 我正在尝试使用python脚本捕获在VScode上工作的网络数据包,并希望使用NiFi实现相同的脚本,但无法实现 我使用的python代码如下: import os, subprocess from subprocess import PIPE from datetime import datetime n = 10 filename = str(datetime.now()).replace(" ","") b = subpro

我是nifi平台的新手

我正在尝试使用python脚本捕获在VScode上工作的网络数据包,并希望使用NiFi实现相同的脚本,但无法实现

我使用的python代码如下:

import os, subprocess
from subprocess import PIPE
from datetime import datetime

n = 10
filename = str(datetime.now()).replace(" ","")
b = subprocess.run(f'sudo tcpdump udp -e -i wlp6s0 -nn -vvv -c {n} -w {filename}.raw',shell=True)

c = '"X%02x"'
a = subprocess.run(f"sudo hexdump -v -e '1/1 {c}' {filename}.raw| sed -e 's/\s\+//g' -e 's/X/\\x/g' ", shell=True , stdout=PIPE, stderr=PIPE)

output_file = open (f'{filename}.txt', 'w')
output_file.write(str(a.stdout))
# print("*************************File Created*************************")

output_file.close()
我使用执行脚本处理器来实现python脚本。但它似乎不起作用。为了执行“sudo命令”,我设置为不使用密码,这样在执行脚本时就不需要输入


谢谢大家!

>由于调用shell命令,可能会考虑执行命令。您仍然可以运行顶级Python脚本来调用子流程,但由于您不使用flowfile属性,因此最好能够调用“真正的”Python。在ExecuteScript中,引擎实际上是Jython,它不允许您导入本机(CPython)模块,例如
scikit
,您只能导入纯Python模块(Python脚本本身不导入本机模块)

谢谢@mattyb回答我的问题。子流程也是python的本机模块之一。据我所知,ExecuteScript应该运行上面提到的脚本。您能否建议对脚本进行任何更改,以帮助在不更改输出的情况下运行脚本?看起来Jython有自己的
子流程
模块(),它似乎没有Python的一些相同方法(如
运行
)。我发送的链接确实提到可以使用
call
运行程序,但不确定这是否有用。