1

My /etc/hosts look like this:

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

I can query duplicated lines by query below:

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

or either use regex

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

But I can't remove these matched lines with a simple rm

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

The problem is, augtool just removes the canonical leaf from the node and ipaddr remains. it cause the save function to returns error. I don't want to use bash script and I try to solve the problem with augeas itself. Assist, please...

P.S. I couldn't find a complete tutorial or document for this useful tool. I would be thankful is someone can propose a good document. I've searched all the web and just found a few simple examples.

Hamid Reza Moradi
  • 429
  • 2
  • 4
  • 11

1 Answers1

2

Your expression selects the canonical node instead of the host node. If you want to delete the host nodes, you need to use:

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

This selects any entry under /files/etc/hosts, whose canonical subnode has value idm.myhost.com.

As for documentation, there's a tutorial on the Augeas website, as well as some more docs on the Augeas wiki.

There's also a video intro to Augeas on Youtube.

I started writing a book some 7 years ago, which can still be found online, but never tpok the time to finish it.

raphink
  • 3,625
  • 1
  • 28
  • 39