我需要通过django在远程机器上调用fabric方法。我的意思是当用户发送给定请求时获取远程机器的主机名。 像这样:
def get_hostname(request):
hostname = os.system('fab remote_server hostname')
return hostname
答案 0 :(得分:8)
为了获得更好的控制和灵活性,您应该使用fabric作为库。见:http://docs.fabfile.org/en/1.3.3/usage/library.html
import fabric.api as fab
from fabric.network import disconnect_all
from contextlib import contextmanager
@context_manager
def ssh(settings):
with settings:
try:
yield
finally:
disconnect_all()
def hostname(request, host='somehost', user='someuser', pw='secret'):
with ssh(fab.settings(host_string=host, user=user, password=pw)):
return fab.run('hostname')
答案 1 :(得分:1)
如果您的服务器具有Fabric所需的部件,您应该能够直接导入fabfile,直接调用该函数。
(这只是我梦见YMMW的一些代码)
import fabfile as f #Your fabfile must be somewhere it can be imported
def get_hostname(request):
hostname = f.remote_server(hostname)
return hostname
您也可以直接从django
导入和使用面料答案 2 :(得分:0)
在版本1.3之后检查fabric.tasks.execute()
。