我正在尝试使用augtool
自动编辑我的/etc/hosts
,因为我希望为 localhost 添加别名(以便我可以使用不同的主机名本地测试我的网络服务器)。
我一直在寻找各种软件来找到好的文档。
ipaddr
我用of找到节点127.0.0.1
并为其添加别名。我还想找到一些关于 Augeas 的好文档。
答案1
虽然向主机添加别名并不难,但通常更有趣的是确保主机条目具有别名,即使操作幂等。
以下是您如何使用 Augeas 做到这一点:
set /files/etc/hosts/*[ipaddr="127.0.0.1"]/alias[.="mycouchdb"] "mycouchdb"
如果别名尚不存在,则只会添加别名。
解释:
alias[.="mycouchdb"]
引用具有值的别名mycouchdb
(因为.
引用当前节点)。
当还没有带有值的别名时mycouchdb
,alias[.="mycouchdb"]
将不匹配任何内容,Augeas 将创建一个带有标签alias
和值的节点mycouchdb
。当节点不存在时的规则是使用不带过滤器的路径标签,在本例中alias
,因此它创建一个新的标签节点并为其分配值mycouchdb
当已经存在别名时,表达式将匹配,并且 set 命令会将值替换为mycouchdb
,这不会执行任何操作。
答案2
执行“使用ipaddr
of查找节点127.0.0.1
并为其添加别名”的特定任务
做
augtool -b -s set '/files/etc/hosts/*[ipaddr = "127.0.0.1"]/alias[last()+1]' mycouchdb
这会在文件中查找任何具有子节点 of 的/etc/host/
节点( )并添加一个of*
ipaddr=127.0.0.1
alias
mycouchdb
文档
这里解释了路径https://github.com/hercules-team/augeas/wiki/Path-expressions它使用 XPath。
抱歉我找不到其他好东西了。