将参数传递给Fabric

将参数传递给Fabric,fabric,Fabric,我在向Fabric传递参数时遇到一些问题。我想提供一个主机名,然后在指定的主机上设置。这是我尝试过的基本结构,但Fabric似乎将其解释为向主机写入“主机名%s”,而不是实际传入的值 @task def configure_host(hostname): sudo("hostname %s") % hostname 我将注意到,此内容位于fabfile目录中名为set_host的文件中。因此,我可以运行“fab-H”user@1.2.3.4设置_host.configure _host“

我在向Fabric传递参数时遇到一些问题。我想提供一个主机名,然后在指定的主机上设置。这是我尝试过的基本结构,但Fabric似乎将其解释为向主机写入“主机名%s”,而不是实际传入的值

@task
def configure_host(hostname):
  sudo("hostname %s") % hostname 
我将注意到,此内容位于fabfile目录中名为set_host的文件中。因此,我可以运行“fab-H”user@1.2.3.4设置_host.configure _host“以运行此代码(当我硬编码主机名时它会工作)。然而,我试着用“fab-H”来运行它user@1.2.3.4设置\u host.configure\u host:host=FunHostname”(注意我的后缀),失败


第一个问题是,它似乎在编写“主机名%s”而不是实际的主机名,但也不太喜欢我的一些sudo命令,有些命令返回“致命错误:sudo()在执行时收到非零返回代码1!”。我可以尝试为后者找到一个解决方法,但我想知道我的基本策略是否符合逻辑。我认为这会很简单,我在这里按照“任务参数”下的大纲进行操作:

您应该在括号中包含字符串格式:

sudo("hostname %s" % hostname)
这样,Fabric将正确地用hostname变量的值替换
%s