¿Cómo puedo usar la salida de un comando en cfengine3?

8

Quiero enumerar el contenido de un directorio y usar el resultado en otro lugar:

bundle agent test
{

   commands:
      "ls /tmp/test/";

    reports:
    ubuntu::
       "print output here for example";  
# or add it to a variable which is how I really want to use it.
 }
awsiv
fuente

Respuestas:

12
bundle agent test
{

    vars:
        "my_result" string => execresult("/bin/ls /tmp/test/","noshell");

    reports:
        ubuntu::
            "Output is : $(my_result)";  
}

Ver https://cfengine.com/manuals/cf3-solutions#Execresult-example

falsificador
fuente
¡Tener cuidado! Este comando se ejecutará varias veces por cf-agentejecución. Vea los documentos sobre pedidos normales y la nota en la parte inferior de los documentos paraexecresult() . Puede lsque no sea importante, pero para comandos más caros sí lo será.
Comodín el
4

A partir de la versión 3.3.0, puede utilizar la función lsdir () en su lugar.

vars:
  "result" slist => lsdir("/tmp/test", ".*", "false");

Leer más: https://cfengine.com/manuals/cf3-Reference#Function-lsdir

Promesa
fuente
Esto es realmente mejor para el lscaso de uso, ya que utiliza el almacenamiento en caché de funciones internas de CFEngine y no llama a un comando externo varias veces por ejecución. Por supuesto, execresult()es más general.
Comodín el