Estoy trabajando en algún código que DD DD un dispositivo de bloque a través de SSH, y estoy queriendo hacer esto con un subproceso para que pueda monitorear el estado de DD durante la transferencia (matando al dd procesa con SIGUSR1 para obtener su estado actual, y lo lee usando selectores).Salida de tubería Python entre dos subprocesos
El comando que estoy tratando de poner en práctica sería algo como esto:
dd if=/dev/sda | ssh [email protected] 'dd of=/dev/sda'
El método actual que probé fue:
dd_process = subprocess.Popen(['dd','if=/dev/sda'],0,None,None,subprocess.PIPE, subprocess.PIPE)
ssh_process = subprocess.Popen(['ssh','[email protected]','dd of=/dev/sda'],0,None,dd_process.stdout)
Sin embargo cuando funciono esto, el proceso se convierte en SSH difunto después de 10-40 segundos.
¿Estoy siendo completamente obtuso aquí, o no hay forma de canalizar entre subprocesos como este?
Editar: Resulta que mi código real no tenía el nombre de host en él. Esta es la forma correcta de hacer las cosas.
espero que usted está utilizando la autenticación basada en una clave u otro mecanismo no interactivo. –
Obviamente;) Acabo de sacar ese argumento ssh para acortar el ejemplo –
relacionado: [¿Cómo uso el subproceso.Popen para conectar múltiples procesos por tuberías?] (Http://stackoverflow.com/q/295459/4279) – jfs