Как подавить только предупреждающие сообщения от cryptsetup?

Вопрос или проблема

В Linux в Bash я запускаю скрипт с некоторыми вызовами cryptsetup, такими как

--luks2-metadata-size=16k --luks2-keyslots-size=256k .... luksFormat ....

которые выводят предупреждения.

Я знаю и понимаю, но не хочу видеть эти предупреждения на экране.

Как я могу подавить их, но при этом показывать сообщения об ошибках?

Ответ или решение

Чтобы подавить предупреждающие сообщения от утилиты cryptsetup в Linux, одновременно сохранив вывод ошибок, существует несколько подходов, которые Вы можете использовать в своем Bash-скрипте. В данном ответе мы рассмотрим каждый из них, предоставив полное понимание проблемы и эффективные способы ее решения.

Подход 1: Направление вывода

Вы можете использовать оператор перенаправления, чтобы направить предупреждения в "черную дыру", сохранив при этом вывод ошибок. В Linux сообщения об предупреждениях, как правило, выводятся на стандартный поток вывода (stdout), в то время как ошибки отправляются на стандартный поток ошибок (stderr).

Для подавления предупреждений, используйте следующую конструкцию:

cryptsetup <ваша команда> 2> /dev/null

Этот пример перенаправляет поток ошибок в /dev/null, таким образом Вы не увидите никаких предупреждений на экране. Если ваша команда также выводит ошибки, они все равно будут отображены.

Если предупреждения содержатся в стандартном выводе, то есть в stdout, и они не отображаются в stderr, можете использовать:

cryptsetup <ваша команда> >/dev/null 2>&1

Но это также подавит все ошибки, что не нужно в вашем случае. Поэтому лучше всего будет оставить только предупреждения, которые можно перенаправить отдельно.

Подход 2: Фильтрация вывода с помощью grep

Если вы хотите более тонко отфильтровать вывод и оставить только ошибки, а предупреждения убрать, можно воспользоваться командой grep. Вы можете использовать регулярные выражения, чтобы отфильтровать предупреждения:

cryptsetup <ваша команда> | grep -v "WARNING" 2>&1

Здесь grep -v "WARNING" уберет строки, содержащие слово "WARNING", оставляя только важные сообщения об ошибках и другую информацию.

Подход 3: Использование sed для фильтрации

Если предупреждения имеют определенный шаблон, вы можете также использовать sed для удаления строк предупреждений:

cryptsetup <ваша команда> 2>&1 | sed '/WARNING/d'

Этот пример использует sed для удаления всех строк, содержащих "WARNING". Таким образом, все остальные ошибки будут отображаться.

Подход 4: Внедрение в скрипт

Внедрите одно из приведенных решений в ваш Bash-скрипт, чтобы подавлять предупреждения от cryptsetup, например:

#!/bin/bash

cryptsetup luksFormat --luks2-metadata-size=16k --luks2-keyslots-size=256k <другие параметры> 2> /dev/null
if [ $? -ne 0 ]; then
    echo "Произошла ошибка при выполнении команды!"
fi

Заключение

Подавление предупреждений от cryptsetup, сохраняя при этом сообщения об ошибках, возможно несколькими способами: через перенаправление потоков вывода, использование grep и sed. Используйте подход, который наиболее соответствует вашим требованиям и стилю скрипта, чтобы эффективно управлять отображаемыми сообщениями. Такой контроль за выводом информации поможет сделать ваш скрипт более информативным и удобочитаемым.

Если у Вас есть дополнительные вопросы или нужно больше деталей, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...