2016-12-27 1 views
0

Je veux exécuter une commande puis connectez sa sortie à un fichier journal à l'aide logging.infoComment exécuter une commande à l'aide et connectez sa sortie en utilisant logging.info en python

J'utilise actuellement

cmd = """var=$(cat ip.txt | head -1 | sed 's/[^|]//g' | awk '{ print length }')""" 
logging.info(cmd) 
process = os.popen(cmd) 
processClose = process.close() 


logging.info($var) 

mais cela me donne une erreur car $ est une syntaxe invalide.

Je veux la sortie dans le fichier journal pour imprimer la valeur de la variable (var)

Répondre

0

$ var est invalide dans votre code. Il est invalide parce que l'espace de processus dans lequel il a été créé a disparu.

Essayez ceci:

import subprocess 
    cmd = "cat ip.txt | head -1 | sed 's/[^|]//g' | awk '{ print length }'" 
    p = subprocess.Popen([cmd,], stdout=subprocess.PIPE, shell=True) 
    p.stdout.readline() 

Hope this helps.

+0

n'est pas à l'exécution du script. Je ne peux pas enregistrer la sortie dans un fichier. cmd = "" "chat ip.txt | head -1 | sed 's/[^ |] // g' | awk '{longueur d'impression}'" "" logging.info (cmd) process = os. popen (cmd) processClose = process.close() Cela fonctionne parfaitement. Je veux juste utiliser logging.info pour voir la sortie dans un fichier journal. – Dgstah

0

La méthode d'exécution ci-dessous fonctionne avec logging.info

success = sp.call(cmd, stdout=open('temp_log', 'w'), stderr=open('temp_err_log', 'w'), shell = True) 
outText = open('temp_log').readlines() 
outText = ''.join(outText) 
logging.info('Dump stderr:\n%s'%(outText)) 
problème