Как получить только результаты команд «поиск ножа»

Когда мы запускаем команду knife search, она показывает количество найденных предметов. Мне не нужно количество элементов, вместо этого мне нужны только результаты. Как его получить. Например, я хотел бы получить код возврата или нулевое значение для приведенной ниже команды.

$ knife search node "name:MyLinux AND role:java"
0 items found

person ReshmaA    schedule 23.06.2015    source источник


Ответы (2)


Вы можете использовать knife exec для этого и использовать exitметод ruby.

Пример (даже если он пытается понять, чего вы хотите достичь с таким небольшим количеством деталей/контекста):

knife exec -E "exit nodes.find('name:MyLinux AND role:java').count > 0"; echo $?

Который вернет 0, если ничего не найдено, и 1, если найдено любое количество узлов.

Если вы хотите что-то сделать с узлами (например, добавить рецепт в run_list):

knife exec -E "nodes.find('name:MyLinux AND role:java') { |n| n.run_list << 'cookbook::recipe'; n.save }"
person Tensibai    schedule 23.06.2015
comment
@amhser, вы можете принять (знак галочки) ответ, если он решит вашу проблему - person Tensibai; 26.06.2015

«Найдено X элементов» записывается в stderr, поэтому может быть проще просто перенаправить его:

$ knife search node "name:MyLinux AND role:java" 2> /dev/null
person ilvidel    schedule 08.07.2016