Justin-

And the reason I mentioned regextract() is that I know that a new Nova release
is coming RSN.  You can certainly get the last field from a line with a regex
that looks like '.*\s(.*)', relying on the greed of the first pattern, and
then grabbing $(match.1) as the field you want, and doing something
complicated with a method... but I figured you'd be willing to wait for the
easy way :-)

-Dan

> Dan,
> 
> Unless I'm missing something, that's not feasible for us since we use
> Nova. We'd need to wait for new packages (for all of our platforms) that
> are built on the latest version of Community and then upgrade all
> systems. (The Nova upgrade process, especially for bug fixes and new
> features, is a concern of mine for which I have a ticket open.) 
> 
> Justin
> 
> -----Original Message-----
> From: d...@lonewolf.com [mailto:d...@lonewolf.com] On Behalf Of
> daniel.kl...@cfengine.com
> Sent: Monday, March 01, 2010 12:04 PM
> To: Justin Lloyd
> Cc: Help-cfengine
> Subject: Re: Editing known_hosts files 
> 
> In the latest version, look at regextract() - I think that'll help get
> the
> field you want, so you can do your insert...
> 
> -Dan
> 
> > No responses? Ok, let me restate the problem more simply.
> > 
> > Given a file whose lines have three space-delimited fields, and given
> a
> > string variable that contains a similar line, how do I replace the
> > entire line in the file whose third field matches the third field in
> the
> > string with that variable? If there is no matching line, just insert
> the
> > string as a new line.
> > 
> > So if I have the file /tmp/test and the variable $(line) containing "a
> b
> > 6" (not hard-coded but rather obtained from another host using
> > remotescalar()):
> > 
> > # cat /tmp/test
> > 1 2 3
> > 4 5 6
> > 7 8 9
> > # cf-agent -Kf ./test.cf
> > # cat /tmp/test
> > 1 2 3
> > a b 6
> > 7 8 9
> > #
> > 
> > splitstring() returns an slist but you can't index into an slist to
> > match the ends of the lines, so the following does not work (but it or
> > something like it would be nice):
> > 
> > vars:
> > 
> >    "line" string => remotescalar(...);
> >   "fields" slist => splitstring("line", " ", 3);
> > 
> > delete_lines:
> > 
> >   ".*$(line[2])";
> > 
> > insert_lines:
> > 
> >   "$(line)";
> > 
> > Thoughts?
> > 
> > Thanks,
> > Justin
> > 
> > -----Original Message-----
> > From: help-cfengine-boun...@cfengine.org
> > [mailto:help-cfengine-boun...@cfengine.org] On Behalf Of Justin Lloyd
> > Sent: Friday, February 26, 2010 6:22 PM
> > To: Help-cfengine
> > Subject: Editing known_hosts files
> > 
> > Ok, I'm thoroughly stumped here. I had something from testing several
> > months ago that I thought was doing the right thing, but now I don't
> > think it was.
> > 
> > I want to insert into ~root/.ssh/known_hosts on certain hosts the root
> > public ssh key from a trusted root host. But the trickier part is to
> > delete any lines from the known_hosts file that match the beginning
> and
> > end of the new key to be added without affecting any other lines. For
> > example, say I have
> > 
> > $(trustedhostkey) = "ssh-dss blahblahblahblah r...@trustedhost"
> > 
> > and in the local ~root/.ssh/known_hosts file:
> > 
> > ssh-dss someoldkeytexthere r...@trustedhost
> > ssh-dss someotherkeytextab r...@anotherhost
> > 
> > I just want to replace the first line with $(trustedhostkey) since the
> > whole line doesn't match the new key but it does match ssh-dss at the
> > beginning and r...@trustedhost at the end. (If the right key is
> already
> > in the file, then it can be left alone.)
> > 
> > Before I had something like
> > 
> > vars:
> > 
> >     "key" string => remotescalar("root_key", "trustedhost", "yes"); #
> > yes = encryption
> >     "key_fields" slist => splitstring("$(key)", " ", 3)
> > 
> > delete_lines:
> > 
> >     "$(key_fields[0]) .* $(key_fields[2])";
> > 
> > insert_lines:
> > 
> >     "$(key)";
> > 
> > But now I've noticed that the indexing of an slist doesn't work. I've
> > been playing around with replace_patterns, trying to figure out how I
> > might use $(match.N) backrefs, but no success yet.
> > 
> > Any thoughts on how to do this?
> > 
> > Thanks,
> > Justin
> > 
> > 
> > This electronic communication and any attachments may contain
> > confidential and proprietary 
> > information of DigitalGlobe, Inc. If you are not the intended
> recipient,
> > or an agent or employee 
> > responsible for delivering this communication to the intended
> recipient,
> > or if you have received 
> > this communication in error, please do not print, copy, retransmit,
> > disseminate or 
> > otherwise use the information. Please indicate to the sender that you
> > have received this 
> > communication in error, and delete the copy you received. DigitalGlobe
> > reserves the 
> > right to monitor any electronic communication sent or received by its
> > employees, agents 
> > or representatives.
> > 
> > _______________________________________________
> > Help-cfengine mailing list
> > Help-cfengine@cfengine.org
> > https://cfengine.org/mailman/listinfo/help-cfengine
> > _______________________________________________
> > Help-cfengine mailing list
> > Help-cfengine@cfengine.org
> > https://cfengine.org/mailman/listinfo/help-cfengine
> 
> This electronic communication and any attachments may contain confidential an
> d proprietary 
> information of DigitalGlobe, Inc. If you are not the intended recipient, or a
> n agent or employee 
> responsible for delivering this communication to the intended recipient, or i
> f you have received 
> this communication in error, please do not print, copy, retransmit, dissemina
> te or 
> otherwise use the information. Please indicate to the sender that you have re
> ceived this 
> communication in error, and delete the copy you received. DigitalGlobe reserv
> es the 
> right to monitor any electronic communication sent or received by its employe
> es, agents 
> or representatives.
> 
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to