fabric - fabric: 将主机名插入配置文件中

  显示原文与译文双语对照的内容

我在创建的过程中有一个 fabric 脚本,并且希望它在配置 file: 中更改以下行

 
Hostname=localhost

 

我希望它包含实际的主机名,例如:

 
Hostname=mypc

 

我尝试使用下面的代码行:


fabric.contrib.files.sed(
 '/etc/zabbix/zabbix_agentd.conf',
 before='Hostname=localhost',
 after='Hostname='"$HOSTNAME",
 use_sudo=True, backup='')

但不幸的是,它不能工作,我已经尝试了各种引号和双引号的组合。 它将把"hostname=$hostname"放在配置文件中。

时间: 作者:

它不会像这样工作。 sed的内容都在单引号内。 只需将名称绑定到主机名,然后使用 python 插值将它的发送到 sed 函数。 你甚至可以使用 env.host 设置。 但使用这里方法的示例如下所示:


hostname = run("hostname -f")
fabric.contrib.files.sed(
 '/etc/zabbix/zabbix_agentd.conf',
 before='Hostname=localhost',
 after='Hostname=%s' % hostname,
 use_sudo=True, backup='')

作者:
...