您好我在python脚本中使用以下代码(不是从命令行运行fab),当我将local
更改为run
或sudo
时,在A行,它给了我错误像:
找不到主机。请指定(单个)主机字符串以进行连接:
代码是:
env.host = "XXXX"
env.user = "XXX"
def execute():
local('uname -a') ### A : changing this gives error ###
execute()
我的目标是ssh到一台host
机器。
答案 0 :(得分:8)
根据结构docs,如果你从python脚本调用任务 - 你应该使用fabric.tasks.execute:
from fabric.tasks import execute
from fabric.api import *
env.user = "XXX"
def execute_task():
sudo('uname -a')
execute(execute_task, host="XXX")
希望有所帮助。
答案 1 :(得分:0)
为什么不使用paramiko
:
import sys
import traceback
import paramiko
paramiko.util.log_to_file('session.log')
username = 'someuser'
port = 22
hostname = 'foo.bar.com'
try:
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.WarningPolicy)
client.connect(hostname, port, username, password)
chan = client.invoke_shell()
print repr(client.get_transport())
print '*** Here we go!'
print
interactive.interactive_shell(chan)
chan.close()
client.close()
except Exception, e:
print '*** Caught exception: %s: %s' % (e.__class__, e)
traceback.print_exc()
try:
client.close()
except:
pass
sys.exit(1)