Comment puis-je utiliser la sortie d'une commande dans cfengine3


8

Je veux lister un contenu de répertoire et utiliser le résultat ailleurs:

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

Réponses:


12
bundle agent test
{

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

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

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


Il faut se méfier! Cette commande sera exécutée plusieurs fois par cf-agentexécution. Voir les documents sur la commande normale et la note au bas des documents pourexecresult() . Car lsce n'est peut-être pas important, mais pour des commandes plus chères, ce le sera certainement.
Wildcard

4

Depuis la version 3.3.0, vous pouvez utiliser la fonction lsdir () à la place.

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

en savoir plus: https://cfengine.com/manuals/cf3-Reference#Function-lsdir


C'est en fait mieux pour le lscas d'utilisation car il utilise la mise en cache des fonctions internes de CFEngine et n'appelle pas une commande externe plusieurs fois par exécution. Bien sûr, execresult()c'est plus général.
Wildcard
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.