Come posso usare l'output di un comando in cfengine3


8

Voglio elencare il contenuto di una directory e utilizzare il risultato altrove:

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.
 }

Risposte:


12
bundle agent test
{

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

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

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


Attenzione! Questo comando verrà eseguito più volte per cf-agentesecuzione. Consulta i documenti sull'ordinamento normale e la nota in fondo ai documenti perexecresult() . Perché lspotrebbe non essere importante, ma per comandi più costosi lo sarà sicuramente.
Carattere jolly

4

A partire dalla versione 3.3.0, è possibile utilizzare invece la funzione lsdir ().

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

leggi di più: https://cfengine.com/manuals/cf3-Reference#Function-lsdir


Questo è in realtà migliore per il lscaso d'uso in quanto utilizza la memorizzazione delle funzioni interne di CFEngine e non chiama un comando esterno più volte per esecuzione. Certo, execresult()è più generale.
Carattere jolly
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.