2

嗨,我在 python 脚本中使用以下代码(不是从命令行运行 fab),在 A 行,当我更改localrunor时sudo,它给了我如下错误:

未找到主机。请指定(单个)主机字符串进行连接:

代码是:

env.host = "XXXX"
env.user = "XXX"

def execute():
    local('uname -a')   ### A : changing this gives error ###       

execute()

我的目标是 ssh 进入一台host机器。

4

2 回答 2

8

根据fabric 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")

希望有帮助。

于 2013-05-09T08:00:12.850 回答
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)
于 2013-05-09T08:00:39.707 回答