擅长:python、mysql、java
<p>尝试在stdin字符串<code>communicate</code>调用中发送一个换行符,如下所示:</p>
<pre><code>import subprocess
cmd = ['cwrsync', '-r', 'root@NN.NN.NN.NN:/src', '/cygdrive/c/dst']
proc = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE,
shell=True)
std1, std2 = proc.communicate("pass\r\n\r\n")
print std1
print std2
</code></pre>
<p>您还应该查看它是否与<code>shell=False</code>(来自<a href="https://docs.python.org/2/library/subprocess.html" rel="nofollow">subprocess docs</a>)一起工作:</p>
<blockquote>
<p>Using <code>shell=True</code> can be a security hazard. See the warning under <a href="https://docs.python.org/2/library/subprocess.html#frequently-used-arguments" rel="nofollow">Frequently Used Arguments</a> for details.</p>
</blockquote>