Python 2.7子流程:tail -f | grep

Python 2.7子流程:tail -f | grep

问题描述:

如何在Python 2.7中运行这个linux命令?Python 2.7子流程:tail -f | grep

tail -f *file.log | grep 10.10.10.100 

下面似乎没有观察到grep。我看到以前的帖子,但没有看到任何人试图拖尾文件,然后管道grep。

subprocess.call(["tail", "-f", "*files.log", "|", "grep", "10.10.10.100"]) 
+0

[在Python中调用外部命令]可能的重复(https://*.com/questions/89228/calling-an-external-command-in-python) – pvg

+0

@pvg - 我检查了该线程,它没有'回答我的问题......我知道如何在这种情况下打电话。 –

+0

@ user1670178请再次查看。它涵盖了shell解析,这是你所缺少的,有多种方式。这是一个确切的愚蠢,还有其他类似的。 – pvg

当你这样做你是执行错误的命令是:

subprocess.call(["tail", "-f", "*files.log", "|", "grep", "10.10.10.100"]) 

您需要使用shell的功能,比如管道(|)时通过该选项shell=True

subprocess.call("tail -f *files.log | grep 10.10.10.100", shell=True) 
+0

我相信,参数需要是单个字符串才能工作。 – pvg

+0

@pvg:谢谢,我修正了这个问题。 –

+0

@Zwinck谢谢,这就是诀窍。 –

或者你可以使用这个命令,

import os 
os.system('tail -f *file.log | grep 10.10.10.100')