<p>建议使用<a href="https://docs.python.org/2/library/subprocess.html" rel="nofollow noreferrer">subprocess</a>模块。<br/>
文档的以下部分具有指导意义:<br/>
<a href="https://docs.python.org/2/library/subprocess.html#replacing-shell-pipeline" rel="nofollow noreferrer">replacing shell pipeline</a><br/>
我在此报告以供参考:</p>
<blockquote>
<p>output=<code>dmesg | grep hda</code></p>
</blockquote>
<p>变成:</p>
<blockquote>
<p><code>p1 = Popen(["dmesg"], stdout=PIPE)</code></p>
<p><code>p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)</code>
<code>p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.</code><br/>
<code>output = p2.communicate()[0]</code></p>
<p>The <code>p1.stdout.close()</code> call after starting the <code>p2</code> is important in order for <code>p1</code> to receive a <code>SIGPIPE</code> if <code>p2</code> exits before <code>p1</code>.</p>
<p>Alternatively, for trusted input, the shell’s own pipeline support may still be used directly:</p>
<p>output=<code>dmesg | grep hda</code></p>
</blockquote>
<p>变成:</p>
<blockquote>
<p><code>output=check_output("dmesg | grep hda", shell=True)</code> </p>
</blockquote>
<p>下面是要翻译的菜谱欧斯波本到子流程模块:<br/>
<a href="https://docs.python.org/2/library/subprocess.html#replacing-os-popen-os-popen2-os-popen3" rel="nofollow noreferrer">replacing os.popen()</a></p>
<p>所以你可以这样做</p>
<pre><code>import subprocess
output=check_output("hastatus -sum |grep `hostname` |grep Grp| awk '{print $6}'", shell=True)
</code></pre>
<p>或者</p>
<p>连接Popens,如上面的文档所示(可能我会这么做)。你知道吗</p>
<p>然后,为了测试您可以使用的输出,假设您使用的是第一种方法:</p>
<pre><code>import sys
import subprocess
....
if 'ONLINE' in output:
sys.exit(1)
</code></pre>