Hi all

I am trying to check for some records in the /etc/hosts file. More
specifically, I want that:

1) There must be only one line matching
"^$(sys.ipv4)\s+$(fqhost)\s+$(uqhost)\b.*$"

I don't care if other names are added after the two canonical ones, in
that order.

2) If there are other lines matching either "^$(sys.ipv4)\b", or
"\b$(fqhost)\b", or "\b$(uqhost)\b", they must be removed

In an attempt to do that, I tried to use readstringlist() to read the
file in memory, and reglist() to match the records, define classes, and
take action. The problem is that regexes in reglist() do *not* expand
scalars, so I can't say:

  classes:
      "has_host_ipv4_record"
          expression =>
            reglist("@(records)",
                    "$(sys.ipv4)\s+$(fqhost)\s+$(uqhost)\b.*") ;

(I know that $(sys.ipv4) must be escaped, but let's close our eyes for a
second...)

Is it possible to force variable expansion before reglist gets to that
string?

If not, what's one possible way to do it?

Thanks
-- bronto
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to