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


lsCFEngine의 내부 함수 캐싱을 사용하고 실행 당 여러 번 외부 명령을 호출하지 않기 때문에 유스 케이스에 실제로 더 좋습니다 . 물론 execresult()더 일반적입니다.
와일드 카드
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.