2024-06-17 07:57:45 发布
网友
有可能使fapfile独立吗? 我不太喜欢运行外部工具'fab'。如果我能够独立地获得fabfile,我可以从(Eclipse/Pydev)IDE中运行该文件,轻松地调试它,使用项目配置和路径等。 为什么这个不起作用:
from fabric.api import run def host_type(): run('uname -s') if __name__ == '__main__': host_type()
如果我没记错的话,我也无法让Fabric API实现我想要的功能。我决定完全放弃额外的层,直接使用Paramiko(Fabric使用的底层SSH库):
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()
虽然还需要几个步骤,但是这样做可以让您直接利用SSH层,而不是使用subprocess来spwan另一个Python实例,或者计算Fabric API。我有几个项目,包括网络和控制台,以这种方式使用Paramiko,我没有遇到太多麻烦。在
subprocess
Paramiko是extensively documented。在
我最终找到了解决方案(而且非常简单!)。 在我的fabfile中,我添加了:
from fabric.main import main if __name__ == '__main__': import sys sys.argv = ['fab', '-f', __file__, 'update_server'] main()
我希望这能帮助人们。。。在
这不是一个很好的解决方案,但会起作用:
import subprocess def hello(): print 'Hello' if __name__ == '__main__': subprocess.call(['fab', '-f', __file__, 'hello'])
如果我没记错的话,我也无法让Fabric API实现我想要的功能。我决定完全放弃额外的层,直接使用Paramiko(Fabric使用的底层SSH库):
虽然还需要几个步骤,但是这样做可以让您直接利用SSH层,而不是使用
subprocess
来spwan另一个Python实例,或者计算Fabric API。我有几个项目,包括网络和控制台,以这种方式使用Paramiko,我没有遇到太多麻烦。在Paramiko是extensively documented。在
我最终找到了解决方案(而且非常简单!)。
在我的fabfile中,我添加了:
我希望这能帮助人们。。。在
这不是一个很好的解决方案,但会起作用:
相关问题 更多 >
编程相关推荐