Como posso usar a saída de um comando no cfengine3

8

Quero listar um conteúdo de diretório e usar o resultado em outro 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
fonte

Respostas:

12
bundle agent test
{

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

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

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

falsificador
fonte
Cuidado! Este comando será executado várias vezes por cf-agentexecução. Consulte os documentos sobre pedidos normais e a nota na parte inferior dos documentos paraexecresult() . Pois lspode não ser importante, mas para comandos mais caros certamente será.
Curinga
4

A partir da versão 3.3.0, você pode usar a função lsdir ().

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

leia mais: https://cfengine.com/manuals/cf3-Reference#Function-lsdir

Juramento
fonte
Isso é realmente melhor para o lscaso de uso, pois utiliza o cache da função interna do CFEngine e não chama um comando externo várias vezes por execução. Claro, execresult()é mais geral.
Curinga