Ejecutar Shell Script desde Python con múltiples tuberías

Quiero ejecutar el siguiente comando de shell en una secuencia de comandos de python:

dom=myserver cat /etc/xen/$myserver.cfg | grep limited | cut -d= -f2 | tr -d \" 

Tengo esto:

 dom = myserver limit = subprocess.call(["cat /etc/xen/%s.cfg | grep limited | cut -d= -f2", str(dom)]) subprocess.call(['/root/bin/xen-limit', str(dom), str(limit)]) 

No funciona, pero no sé por qué ..

Actualizar:

 c1 = ['cat /etc/xen/%s.cfg'] p1 = subprocess.Popen(c1, stdout=subprocess.PIPE) c2 = ['grep limited'] p2 = subprocess.Popen(c2, stdin=p1.stdout, stdout=subprocess.PIPE) c3 = ['cut -d= -f2'] p3 = subprocess.Popen(c3, stdin=p2.stdout, stdout=subprocess.PIPE) c4 = ['tr -d \"'] p4 = subprocess.Popen(c4, stdin=p3.stdout, stdout=subprocess.PIPE) result = p4.stdout.read() limit = subprocess.call([result]) subprocess.call(['/root/bin/xen-limit', str(dom), str(limit)]) 

Puedes pegar varios subprocesos juntos:

 c1 = ['ls'] p1 = subprocess.Popen(c1, stdout=subprocess.PIPE) c2 = ['wc'] p2 = subprocess.Popen(c2, stdin=p1.stdout, stdout=subprocess.PIPE) result = p2.stdout.read() 

Observe cómo hemos establecido el stdin de p2 para que sea el stdout de p1.

EDIT: simplificado el ejemplo

Lo hizo : D Gracias

 dom = myserver c1 = ['/bin/cat', '/etc/xen/%s.cfg' % (str(dom))] p1 = subprocess.Popen(c1, stdout=subprocess.PIPE) c2 = ['grep', 'limited'] p2 = subprocess.Popen(c2, stdin=p1.stdout, stdout=subprocess.PIPE) c3 = ['cut', '-d=', '-f2'] p3 = subprocess.Popen(c3, stdin=p2.stdout, stdout=subprocess.PIPE) c4 = ['tr', '-d', '\"'] p4 = subprocess.Popen(c4, stdin=p3.stdout, stdout=subprocess.PIPE) result = p4.stdout.read() subprocess.call(['/root/bin/xen-limit', str(dom), str(result)])