擅长:python、mysql、java
<p>您正在命令行中使用一种称为processsubstitution的特殊语法。大多数现代shell(bash,zsh)都支持这一点,但是/bin/sh不支持它。因此,Ned建议的方法可能行不通。(如果另一个shell提供了/bin/sh,并且没有“正确地模仿”sh的行为,那么它可能会这样做,但不能保证会这样做)。
试试这个:</p>
<pre><code>cmd = "diff <(ssh -n root@10.22.254.34 cat /vms/cloudburst.qcow2.*) <(ssh -n root@10.22.254.101 cat /vms/cloudburst.qcow2)"
output,error = subprocess.Popen(['/bin/bash', '-c', cmd], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
</code></pre>
<p>这基本上就是shell=True参数所做的,但是使用/bin/bash而不是/bin/sh(如<a href="http://docs.python.org/library/subprocess.html#popen-constructor" rel="nofollow">subprocess docs</a>中所述)。在</p>