Fabric:将主机名插入配置文件

时间:2014-01-15 20:00:35

标签: fabric

我有一个Fabric脚本我正在创建,我希望它在配置文件中更改以下行:

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”放入配置文件中。

1 个答案:

答案 0 :(得分:2)

它不会像那样工作。 sed的东西都在单引号内。只需将名称绑定到hostname值,然后使用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='')