2 Replies Latest reply on Dec 28, 2017 8:24 AM by Emiliano Cicarelli

    BAO: Formatting Output from SSH

    Emiliano Cicarelli

      Me presento, soy Emiliano de Argentina,

      Y me pasa que quiero dar formato a una salida de ssh, que como soy nuevo, me esta costando resolver, espero puedan ayudarme, Muchas gracias de antemano.

       

      paso a detallarlo...

       

      El output de la ejecución de los siguientes comandos:

       

      A )    sudo ssh 172.29.206.60 updatedb

       

      B )    pwd

       

      C )    sudo ssh 172.29.206.60 "locate jboss.sh -0 | xargs -0 ls -ltrc"

       

       

      <ssh-command-output>

        <metadata>

          <status>success</status>

        </metadata>

        <targets-output>

          <target-output host="server_Original">

            <metadata>

      <os-id>Linux</os-id>

      <os-version>2.6.32-696.13.2.el6.i686</os-version>

      <status>success</status>

            </metadata>

            <commands-output>

      <command-output>

      <metadata>

      <command>sudo ssh 172.29.206.60 updatedb</command>

      <line-count>1</line-count>

      <execution-milliseconds>1582</execution-milliseconds>

      <exit-code>0</exit-code>

      <status>success</status>

      </metadata>

      <output>

      <line index="1">[user@server ~]$</line>

      </output>

      </command-output>

      <command-output>

      <metadata>

      <command>pwd</command>

      <line-count>2</line-count>

      <execution-milliseconds>11</execution-milliseconds>

      <exit-code>0</exit-code>

      <status>success</status>

      </metadata>

      <output>

      <line index="1">/home/user</line>

      <line index="2">[user@server ~]$</line>

      </output>

      </command-output>

      <command-output>

      <metadata>

      <command>sudo ssh 172.29.206.60 "locate jboss.sh -0 | xargs -0 ls -ltrc" </command>

      <line-count>3</line-count>

      <execution-milliseconds>796</execution-milliseconds>

      <exit-code>0</exit-code>

      <status>success</status>

      </metadata>

                <output>

      <line index="1">-rwxr-xr-x. 1 root   root 2097 Feb 17  2017 /home/usermio/jboss.sh</line>

      <line index="2">-rwxr-xr-x. 1 root   root 2097 Feb 17 2017 /home/userotro/jboss.sh</line>

      <line index="3">[user@server ~]$</line>

      </output>

      </command-output>

            </commands-output>

          </target-output>

        </targets-output>

      </ssh-command-output>

       

       

       

      La parte que más me interesa acá es la que esta resaltada, entonces guardo esa salida de la siguiente manera

       

      SalidaOutput=normalize-space(//commands-output/command-output[3]/output)

       

      Y cuando lo veo que contiene la variable es lo siguiente:

       

      -rwxr-xr-x. 1 root root 2097 Feb 17 2017 /home/usermio/jboss.sh-rwxr-xr-x. 1 root root 2097 Feb 17 2017 /home/userotro/jboss.sh[user@server ~]$

       

       

       

      Hasta acá es donde llego, pero lo que yo precisaría, es guardar en alguna otra variable, los directorios que pueda ver, en este caso solo son 2, pero podrían ser infinito de directorios distintos, donde encuentre ese archivo, que también a modo ejemplo es jboss.sh, pero es solo para este caso.

       

      Lo que precisaría poder ver:

       

      /home/usermio/jboss.sh

      /home/userotro/jboss.sh

       

      Entonces la consulta es: ¿Cómo puedo hacer para llegar al resultado de arriba? Teniendo la variable SalidaOutput.

       

        Gracias,

        • 1. Re: BAO: Formatting Output from SSH
          Aryan Anantwar

          Hi Emiliano,

           

          use below:

          Output= //commands-output/command-output[3]/output/line

           

          you will get the results as:

          <result>

          <line index="1">:rwxr:xr:x. 1 root   root 2097 Feb 17  2017 /home/usermio/jboss.sh</line>

          <line index="2">:rwxr:xr:x. 1 root   root 2097 Feb 17 2017 /home/userotro/jboss.sh</line>

          <line index="3">[user@server ~]$</line>

          </result>

           

          on this you can apply another xpath to extract the values you want, i.e. for first value = //line[@index="1"]/text()

           

          Hope This Helps.

           

          Regards,

          Aryan Anantwar

          • 2. Re: BAO: Formatting Output from SSH
            Emiliano Cicarelli

            Thank you, luckily, I was able to do the output, as I wanted! It was with an XSL path, which I do not understand much, but it is working. I leave the XSL. Thanks!

             

             

            <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
            <xsl:output indent="no" />
            <xsl:template match="/">
            <list>
            <xsl:for-each select="//commands-output/command-output[3]/output/line[contains(., "/")]">
            <path>
            <xsl:value-of select="concat("/",substring-after(., " /"))" disable-output-escaping="no" />
            </path>
            </xsl:for-each>
            </list>
            </xsl:template>
            </xsl:stylesheet>