Как я могу использовать вывод команды в cfengine3


8

Я хочу перечислить содержимое каталога и использовать результат в другом месте:

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

Ответы:


12
bundle agent test
{

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

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

См. Https://cfengine.com/manuals/cf3-solutions#Execresult-example.


Осторожно! Эта команда будет выполняться несколько раз за cf-agentцикл. См. Документацию по нормальному порядку и примечание внизу документа дляexecresult() . Для lsнего не может быть важным, но для более дорогих команд, безусловно , будет.
Уайлдкарт

4

Начиная с версии 3.3.0, вы можете использовать функцию lsdir ().

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

читать дальше: https://cfengine.com/manuals/cf3-Reference#Function-lsdir


На самом деле это лучше для lsварианта использования, поскольку он использует внутреннее кэширование функций CFEngine и не вызывает внешнюю команду несколько раз за запуск. Конечно, execresult()более общий.
Уайлдкарт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.