2017-08-26 1 views
0

Comment exécuter cette commande linux dans Python 2.7?Sous-processus Python 2.7: tail -f | grep

tail -f *file.log | grep 10.10.10.100 

Ce qui suit ne semble pas observer le grep. J'ai vu les messages précédents, mais je n'ai vu personne qui essayait de mettre un fichier sur la queue, puis de faire pipi.

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

Copie possible de [Appel d'une commande externe en Python] (https://stackoverflow.com/questions/89228/calling-an-external-command-in-python) – pvg

+0

@pvg - J'ai revu ce fil de discussion et il ne le fait pas t répondre à ma question ... Je sais comment faire l'appel n'est pas dans ce contexte. –

+0

@ user1670178 veuillez l'examiner à nouveau. Il couvre l'analyse syntaxique, ce qui vous manque de plusieurs façons. C'est une dupe exacte et il y en a d'autres semblables. – pvg

Répondre

1

Vous exécutez la mauvaise commande lorsque vous faites ceci:

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

Vous devez passer l'option shell=True lorsque vous utilisez les fonctions du shell comme le pipeline (|):

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

L'argument doit être une chaîne unique pour que cela fonctionne, je crois. – pvg

+0

@pvg: Merci, j'ai corrigé ça. –

+0

@Zwinck merci, cela fait l'affaire. –

-1

vous pouvez également utiliser cette commande,

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