【发布时间】:2011-06-18 07:52:32
【问题描述】:
我正在编写一些将通过 SSH DD 块设备的代码,我想用子进程执行此操作,以便我可以在传输期间监视 DD 的状态(使用 SIGUSR1 杀死 dd 进程以获取它的当前状态,并使用选择读取)。
我试图实现的命令是这样的:
dd if=/dev/sda | ssh root@example.com 'dd of=/dev/sda'
我目前尝试的方法是:
dd_process = subprocess.Popen(['dd','if=/dev/sda'],0,None,None,subprocess.PIPE, subprocess.PIPE)
ssh_process = subprocess.Popen(['ssh','root@example.com','dd of=/dev/sda'],0,None,dd_process.stdout)
但是,当我运行它时,SSH 进程会在 10-40 秒后失效。
我在这里是完全迟钝,还是没有办法像这样在子进程之间进行管道传输?
编辑:原来我的真实代码中没有主机名。这是做事的正确方法。
【问题讨论】:
-
我希望您使用的是基于密钥的身份验证或其他非交互机制。
-
显然 ;) 我只是去掉了 ssh 参数来缩短示例
标签: python unix subprocess