hace 8 años que se deprecó commands, y el japones seguia alerta en su isla desierta, sin saber que la guerra ya habia terminado.
pasos:
- partimos de un comando en un string
- el resultado es la salida, como string, para ser procesado por quien siga
- pasar el string del comando por shlex.split:
args = shlex.split(comando) proceso = Popen(args, stdout=PIPE, stderr=PIPE, shell=False) salida, error = proceso.communicate() if proceso.returncode !=0: print("mal")
Despues hay que atender al contenido de proceso.returncode, si es distinto de cero, algo ha ido mal
- para dos comandos unidos por pipe:
mensaje = "sensor.medida.temp {} {}".format( t, int(time())) logging.debug(mensaje) comando1 = ['echo ', mensaje ] comando2 = [ 'nc', '-q0', CARBON_SERVER, CARBON_PORT] proc1 = Popen(comando1, stdout=PIPE, shell=False) proc2 = Popen(comando2, stdin=proc1.stdout, stdout=PIPE, shell=False) logging.debug(proc2.communicate()[0]
- habiendo importado lo necesario:
from subprocess import Popen, PIPE