https://issues.rudder.io/https://issues.rudder.io/themes/rudder7/favicon/favicon.ico?17096450182015-08-11T22:24:20ZIssue TrackerRudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=445552015-08-11T22:24:20ZFlorian Heigl
<ul></ul><p>Oh and this was indented, it's just redmine that didn't like what I pasted.</p>
<pre>
[root@install ~]# env
MANPATH=/opt/rudder/share/man:/opt/rudder/share/man
HOSTNAME=install
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
TERMCAP=SC|xterm|VT 100/ANSI X3.64 virtual terminal:\
:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\
:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\
:do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\
:le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\
:li#62:co#157:am:xn:xv:LP:sr=\EM:al=\E[L:AL=\E[%dL:\
:cs=\E[%i%d;%dr:dl=\E[M:DL=\E[%dM:dc=\E[P:DC=\E[%dP:\
:im=\E[4h:ei=\E[4l:mi:IC=\E[%d@:ks=\E[?1h\E=:\
:ke=\E[?1l\E>:vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\
:ti=\E[?1049h:te=\E[?1049l:us=\E[4m:ue=\E[24m:so=\E[3m:\
:se=\E[23m:mb=\E[5m:md=\E[1m:mr=\E[7m:me=\E[m:ms:\
:Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\
:vb=\Eg:G0:as=\E(0:ae=\E(B:\
:ac=\140\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\
:po=\E[5i:pf=\E[4i:k0=\E[10~:k1=\EOP:k2=\EOQ:k3=\EOR:\
:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
:k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:F3=\E[1;2P:\
:F4=\E[1;2Q:F5=\E[1;2R:F6=\E[1;2S:F7=\E[15;2~:\
:F8=\E[17;2~:F9=\E[18;2~:FA=\E[19;2~:kb=:K2=\EOE:\
:kB=\E[Z:kF=\E[1;2B:kR=\E[1;2A:*4=\E[3;2~:*7=\E[1;2F:\
:#2=\E[1;2H:#3=\E[2;2~:#4=\E[1;2D:%c=\E[6;2~:%e=\E[5;2~:\
:%i=\E[1;2C:kh=\E[1~:@1=\E[1~:kH=\E[4~:@7=\E[4~:\
:kN=\E[6~:kP=\E[5~:kI=\E[2~:kD=\E[3~:ku=\EOA:kd=\EOB:\
:kr=\EOC:kl=\EOD:km:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/var/rudder/cfengine-community/bin:/root/bin:/var/rudder/cfengine-community/bin:/root/bin
MAIL=/var/spool/mail/root
STY=15484.pts-0.install
</pre>
<p>set on the other hand gives a single line.</p>
<pre>
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
PS1='[\u@\h \W]\$ '
PS2='> '
PS4='+ '
PWD=/root
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=2
STY=15484.pts-0.install
TERM=xterm
TERMCAP=$'SC|xterm|VT 100/ANSI X3.64 virtual terminal:\\\n\t:DO=\\E[%dB:LE=\\E[%dD:RI=\\E[%dC:UP=\\E[%dA:bs:bt=\\E[Z:\\\n\t:cd=\\E[J:ce=\\E[K:cl=\\E[H\\E[J:cm=\\E[%i%d;%dH:ct=\\E[3g:\\\n\t:do=^J:nd=\\E[C:pt:rc=\\E8:rs=\\Ec:sc=\\E7:st=\\EH:up=\\EM:\\\n\t:le=^H:bl=^G:cr=^M:it#8:ho=\\E[H:nw=\\EE:ta=^I:is=\\E)0:\\\n\t:li#62:co#157:am:xn:xv:LP:sr=\\EM:al=\\E[L:AL=\\E[%dL:\\\n\t:cs=\\E[%i%d;%dr:dl=\\E[M:DL=\\E[%dM:dc=\\E[P:DC=\\E[%dP:\\\n\t:im=\\E[4h:ei=\\E[4l:mi:IC=\\E[%d@:ks=\\E[?1h\\E=:\\\n\t:ke=\\E[?1l\\E>:vi=\\E[?25l:ve=\\E[34h\\E[?25h:vs=\\E[34l:\\\n\t:ti=\\E[?1049h:te=\\E[?1049l:us=\\E[4m:ue=\\E[24m:so=\\E[3m:\\\n\t:se=\\E[23m:mb=\\E[5m:md=\\E[1m:mr=\\E[7m:me=\\E[m:ms:\\\n\t:Co#8:pa#64:AF=\\E[3%dm:AB=\\E[4%dm:op=\\E[39;49m:AX:\\\n\t:vb=\\Eg:G0:as=\\E(0:ae=\\E(B:\\\n\t:ac=\\140\\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\\\n\t:po=\\E[5i:pf=\\E[4i:k0=\\E[10~:k1=\\EOP:k2=\\EOQ:k3=\\EOR:\\\n\t:k4=\\EOS:k5=\\E[15~:k6=\\E[17~:k7=\\E[18~:k8=\\E[19~:\\\n\t:k9=\\E[20~:k;=\\E[21~:F1=\\E[23~:F2=\\E[24~:F3=\\E[1;2P:\\\n\t:F4=\\E[1;2Q:F5=\\E[1;2R:F6=\\E[1;2S:F7=\\E[15;2~:\\\n\t:F8=\\E[17;2~:F9=\\E[18;2~:FA=\\E[19;2~:kb=\177:K2=\\EOE:\\\n\t:kB=\\E[Z:kF=\\E[1;2B:kR=\\E[1;2A:*4=\\E[3;2~:*7=\\E[1;2F:\\\n\t:#2=\\E[1;2H:#3=\\E[2;2~:#4=\\E[1;2D:%c=\\E[6;2~:%e=\\E[5;2~:\\\n\t:%i=\\E[1;2C:kh=\\E[1~:@1=\\E[1~:kH=\\E[4~:@7=\\E[4~:\\\n\t:kN=\\E[6~:kP=\\E[5~:kI=\\E[2~:kD=\\E[3~:ku=\\EOA:kd=\\EOB:\\\n\t:kr=\\EOC:kl=\\EOD:km:'
UID=0
USER=root
WINDOW=0
_=env
colors=/etc/DIR_COLORS
</pre><br />...etc etc... Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=460702015-09-23T14:02:34ZJanos Mattyasovszky
<ul><li><strong>Description</strong> updated (<a title="View differences" href="/journals/46070/diff?detail_id=57139">diff</a>)</li></ul> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=479172015-11-20T11:12:02ZJanos Mattyasovszky
<ul></ul><p>This would work on Linux, where env supports the -0 option:</p>
<pre>
env -0 | sed 's/"/\\"/g; s/\x0/"\n/g;' | sed 's/^\([^= \t]\+\)=/node.env[\1]="/g;'
</pre>
<p>(tested on Fedora 21)</p> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=479272015-11-20T22:34:17ZJanos Mattyasovszky
<ul><li><strong>Target version</strong> set to <i>3.1.5</i></li><li><strong>Pull Request</strong> set to <i>https://github.com/Normation/rudder-techniques/pull/771</i></li><li><strong>How to reproduce</strong> updated (<a title="View differences" href="/journals/47927/diff?detail_id=59506">diff</a>)</li><li><strong>Found in version(s) old</strong> <i>3.1.2</i> added</li></ul><p>Please check PR @ <a class="external" href="https://github.com/Normation/rudder-techniques/pull/771">https://github.com/Normation/rudder-techniques/pull/771</a>.</p>
<p>Changed the way it parses the environment:</p>
<p>Instead of writing a bash script, that is being executed as a module (which apparently also does not handle multi-lined strings), the output of env -0 (null-terminated) is used, and by grepping/sed/tr-ing, we extract the variable names to an array, then populate the node.env by the getenv() built-in function, which was introduced in 3.0.4, and are happy.</p>
<p>I have not found a way to reproduct something similar on Solaris, I was looking into the bash's "set", which outputs all variables in ANSI-C-Like quoting, but not only the environment variables, so this might need additional processing, probably by something like printenv...</p> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=479282015-11-21T00:23:53ZJanos Mattyasovszky
<ul><li><strong>Assignee</strong> set to <i>Nicolas CHARLES</i></li></ul> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=481142015-11-24T16:22:57ZJonathan CLARKEjonathan.clarke@normation.com
<ul><li><strong>Related to</strong> <i><a class="issue tracker-2 status-5 priority-16 priority-default closed child" href="/issues/5643">User story #5643</a>: Implement node variable acces via ${node.env[ENV]}</i> added</li></ul> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=481162015-11-24T16:24:11ZJonathan CLARKEjonathan.clarke@normation.com
<ul><li><strong>Status</strong> changed from <i>New</i> to <i>Pending technical review</i></li><li><strong>Target version</strong> changed from <i>3.1.5</i> to <i>3.0.12</i></li></ul><p>This was introduced in Rudder 3.0, so should be fixed there too.</p> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=481252015-11-24T18:01:40ZJanos Mattyasovszky
<ul><li><strong>Status</strong> changed from <i>Pending technical review</i> to <i>Pending release</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>Applied in changeset <a class="changeset" title="Fixes #7094 Multi-Line ENV variables parsing fixed Not using 'command module' to enumerate env ..." href="https://issues.rudder.io/projects/rudder/repository/rudder-techniques/revisions/86b088c2ed9d23fad961a9f66c9e7f8fe7d10d71">rudder-techniques|86b088c2ed9d23fad961a9f66c9e7f8fe7d10d71</a>.</p> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=481262015-11-24T18:01:43ZJonathan CLARKEjonathan.clarke@normation.com
<ul></ul><p>Applied in changeset <a class="changeset" title="Merge pull request #771 from matya/matya-7094-fix-multi-line-env-variable-support-for-linux Fixe..." href="https://issues.rudder.io/projects/rudder/repository/rudder-techniques/revisions/ff9d4db4671c6e00dfcf152cd764b85e73a2eeb6">rudder-techniques|ff9d4db4671c6e00dfcf152cd764b85e73a2eeb6</a>.</p> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=497092015-12-10T15:18:23ZVincent MEMBRÉvme@rudder.io
<ul><li><strong>Status</strong> changed from <i>Pending release</i> to <i>Released</i></li></ul><p>This bug has been fixed in Rudder 3.0.12 and 3.1.5 which were released today. </p>
<ul>
<li>3.0: <a href="http://www.rudder-project.org/pipermail/rudder-announce/2015-December/000171.html" class="external">Announce</a> <a href="http://www.rudder-project.org/foswiki/bin/view/System/Documentation:ChangeLog30" class="external">Changelog</a></li>
<li>3.1: <a href="http://www.rudder-project.org/pipermail/rudder-announce/2015-December/000170.html" class="external">Announce</a> <a href="http://www.rudder-project.org/foswiki/bin/view/System/Documentation:ChangeLog31" class="external">Changelog</a></li>
<li>Download: <a class="external" href="https://www.rudder-project.org/site/get-rudder/downloads/">https://www.rudder-project.org/site/get-rudder/downloads/</a></li>
</ul> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=507152016-01-13T15:41:32ZAlexis Moussetalexis.mousset@rudder.io
<ul><li><strong>Related to</strong> <i><a class="issue tracker-1 status-5 priority-16 priority-default closed parent" href="/issues/7761">Bug #7761</a>: Error in environment-variables.cf on Centos 5</i> added</li></ul> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=565562016-06-06T08:34:43ZJanos Mattyasovszky
<ul><li><strong>Related to</strong> <i><a class="issue tracker-4 status-5 priority-16 priority-default closed" href="/issues/8464">Architecture #8464</a>: Make environment variables parse easier</i> added</li></ul> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=716242017-02-23T09:59:12ZBenoît PECCATTEbenoit.peccatte@rudder.io
<ul><li><strong>Found in version (s)</strong> <i>3.1.2</i> added</li></ul> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=716272017-02-23T09:59:58ZBenoît PECCATTEbenoit.peccatte@rudder.io
<ul><li><strong>Found in version(s) old</strong> deleted (<del><i>3.1.2</i></del>)</li></ul> Rudder - Bug #7094: Agent processes parts of the environment (multiline bash variables)https://issues.rudder.io/issues/7094?journal_id=822892017-09-27T09:43:27ZNicolas CHARLESnicolas.charles@rudder.io
<ul><li><strong>Related to</strong> <i><a class="issue tracker-1 status-5 priority-16 priority-default closed" href="/issues/11435">Bug #11435</a>: Error message on classical windows agent when getting environement variable</i> added</li></ul>