【问题标题】:Passing in a parameter to Fabric将参数传递给 Fabric
【发布时间】:2014-06-03 13:05:30
【问题描述】:

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

@task
def configure_host(hostname):
  sudo("hostname %s") % hostname 

我会注意到此内容位于 fabfile 目录中名为 set_host 的文件中。因此,我可以运行“fab -H user@1.2.3.4 set_host.configure_host”来运行此代码(当我硬编码主机名时它可以工作)。但是,我尝试将它作为“fab -H user@1.2.3.4 set_host.configure_host:host=FunHostname”运行(注意我的后缀),它失败了。

第一个问题是它似乎在写“主机名 %s”而不是实际的主机名,但也不太喜欢我的一些 sudo 命令,有些返回“致命错误:sudo() 收到非零返回码1 执行时!”。我可以尝试为后者找到一种解决方法,但我想知道我让用户传入参数的基本策略是否合乎逻辑。我认为这很简单,我在此处遵循“任务参数”下的大纲:http://docs.fabfile.org/en/latest/tutorial.html

【问题讨论】:

    标签: fabric


    【解决方案1】:

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

    sudo("hostname %s" % hostname)
    

    这样,Fabric 将正确地将 %s 替换为主机名变量的值。

    【讨论】:

      猜你喜欢
      • 2019-01-28
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 2013-11-19
      • 2011-01-06
      相关资源
      最近更新 更多