我正在尝试在控制台中读取我的一个项目的snort警报。
我做的是,我编写了一个以下代码来运行snort来监听我的界面。
import subprocess
command = 'snort -l /var/log/snort -c /etc/snort/snort.conf -A console -i s1-eth1'
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
process.wait()
print process.returncode
我通过另一个python脚本运行上面的脚本,如下所示
#!/usr/bin/env python
import os
import sys
from subprocess import Popen, PIPE, STDOUT
script_path = os.path.join(os.getcwd() +'/', 'comm.py')
p = Popen([sys.executable, '-u', script_path],
stdout=PIPE, stderr=STDOUT, bufsize=1)
with p.stdout:
for line in iter(p.stdout.readline, b''):
print line,
p.wait()
脚本的输出将我带到snort侦听的位置。但是当做实验触发snort文件的规则来提醒时,它不会在我运行python脚本的终端中打印输出。
当我在普通终端中运行snort命令时,警告消息会打印出所有罚款。
知道任何有关此事的工作。
提前致谢。