Làm thế nào tôi có thể sử dụng đầu ra của một lệnh trong cfengine3


8

Tôi muốn liệt kê một nội dung thư mục và sử dụng kết quả ở một nơi khác:

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

Câu trả lời:


12
bundle agent test
{

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

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

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


Coi chừng! Lệnh này sẽ được chạy nhiều lần trong mỗi lần cf-agentchạy. Xem các tài liệu về thứ tự bình thường và ghi chú ở dưới cùng của tài liệu choexecresult() . Đối với lsnó có thể không quan trọng, nhưng đối với các lệnh đắt tiền hơn, nó chắc chắn sẽ được.
tự đại diện

4

Kể từ phiên bản 3.3.0, bạn có thể sử dụng hàm lsdir ().

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

đọc thêm: https://cfengine.com/manuals/cf3-Reference#Function-lsdir


Điều này thực sự tốt hơn cho lstrường hợp sử dụng vì nó sử dụng bộ đệm ẩn chức năng nội bộ của CFEngine và không gọi lệnh bên ngoài nhiều lần trong mỗi lần chạy. Tất nhiên, execresult()là tổng quát hơn.
tự đại diện
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.