First, put the whole line in single quotes in order to prevent Puppet from trying to resolve all the dollar signs as variables. Then simply escape all quotes within your string. I didn’t test it, but this should work:
line => ‘PROMPT_COMMAND=\'history -a >(tee -a ~/.bash_history | logger -t \"USER: $USER[$$] SSH: $SSH_CONNECTION $PWD\")\'’ ,
As an alternative you might want to have a look at Puppet’s Augeas.
Bernd
From: puppet...@googlegroups.com [mailto:puppet...@googlegroups.com] On Behalf Of Javier Arduini
Sent: Dienstag, 11. Dezember 2012 13:16
To: puppet...@googlegroups.com
Subject: [Puppet Users] exec command
Hi all, im trying to make a module to add a line at the end of the /etc/profile file to redirect all the loggins to a remote server. It´s something like this:
class syslog {
define append_if_no_such_line ($file, $line) {
exec { "Line1" :
command => "/bin/echo '$line' >> '$file'",
unless => "/bin/grep -Fx '$line' '$file'",
alias => "Line1",
}
}
append_if_no_such_line {
"modify.profile.redhat" :
file => "/etc/profile",
line => " PROMPT_COMMAND='history -a >(tee -a ~/.bash_history | logger -t "USER: $USER[$$] SSH: $SSH_CONNECTION $PWD")' ",
}
}
The problem is that the line i want to add have a lot of " " and ' ' and puppet cut the line and give me an error of execution.
Anyone know how to pass this line: PROMPT_COMMAND='history -a >(tee -a ~/.bash_history | logger -t "USER: $USER[$$] SSH: $SSH_CONNECTION $PWD")' as a single line in puppet?
Thanks a lot, sorry about my english
Javier Arduini
--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/q6R6cMcysRIJ.
To post to this group, send email to puppet...@googlegroups.com.
To unsubscribe from this group, send email to puppet-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Hi all, im trying to make a module to add a line at the end of the /etc/profile file to redirect all the loggins to a remote server. It´s something like this:class syslog {define append_if_no_such_line ($file, $line) {exec { "Line1" :command => "/bin/echo '$line' >> '$file'",unless => "/bin/grep -Fx '$line' '$file'",alias => "Line1",}}append_if_no_such_line {"modify.profile.redhat" :file => "/etc/profile",line => " PROMPT_COMMAND='history -a >(tee -a ~/.bash_history | logger -t "USER: $USER[$$] SSH: $SSH_CONNECTION $PWD")' ",}}The problem is that the line i want to add have a lot of " " and ' ' and puppet cut the line and give me an error of execution.Anyone know how to pass this line: PROMPT_COMMAND='history -a >(tee -a ~/.bash_history | logger -t "USER: $USER[$$] SSH: $SSH_CONNECTION $PWD")' as a single line in puppet?Thanks a lot, sorry about my englishJavier Arduini