擅长:python、mysql、java
<p>如果我没记错的话,我也无法让Fabric API实现我想要的功能。我决定完全放弃额外的层,直接使用<a href="http://www.lag.net/paramiko/" rel="nofollow noreferrer">Paramiko</a>(Fabric使用的底层SSH库):</p>
<pre><code>import os
import paramiko
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname.example.com', 22, 'username', 'password')
ssh.save_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
stdin, stdout, stderr = ssh.exec_command('uname -s')
print stdout.read()
</code></pre>
<p>虽然还需要几个步骤,但是这样做可以让您直接利用SSH层,而不是使用<code>subprocess</code>来spwan另一个Python实例,或者计算Fabric API。我有几个项目,包括网络和控制台,以这种方式使用Paramiko,我没有遇到太多麻烦。在</p>
<p>Paramiko是<a href="http://www.lag.net/paramiko/docs/" rel="nofollow noreferrer">extensively documented</a>。在</p>