我有一个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”放入配置文件中。
答案 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='')