微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用augtool从/ etc / hosts删除多行

如何解决使用augtool从/ etc / hosts删除多行

我的/ etc / hosts看起来像这样:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.13.11   idm.myhost.com
192.168.13.10   dnsf.myhost.com
192.168.13.11   idm.myhost.com
192.168.13.10   dnsf.myhost.com
192.168.13.11   idm.myhost.com
192.168.13.10   dnsf.myhost.com
192.168.13.10   temp1.myhost.com

我可以通过以下查询查询重复的行:

 print /files/etc/hosts/*/canonical["idm.myhost.com"]

或使用正则表达式

defvar mypath /files/etc/hosts
print $mypath/*/*[.=~ regexp("dnsf.myhost.com")]

但是我无法用简单的rm删除这些匹配的行

rm /files/etc/hosts/*/canonical["idm.myhost.com"]

问题是,augtool只是从节点中删除规范叶,而ipaddr仍然保留。它导致保存功能返回错误。 我不想使用bash脚本,而是尝试使用augeas本身解决问题。 协助,请...

P.S。我找不到此有用工具的完整教程或文档。我要感谢有人可以提出一份好的文件。我搜索了所有的网络,并找到了一些简单的示例。

解决方法

您的表达式选择规范节点而不是主机节点。如果要删除主机节点,则需要使用:

rm /files/etc/hosts/*[canonical="idm.myhost.com"]

此操作选择/files/etc/hosts下的任何条目, canonical子节点的值为idm.myhost.com

关于文档,有一个教程on the Augeas website,还有关于the Augeas wiki的更多文档。

还有Augeas on Youtube的视频介绍。

大约7年前我开始writing a book,虽然可以still be found online,但从来没有花时间完成它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。