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 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

Reply via email to