Чтобы сопоставить все не -буквенно-цифровые символы, используйте [^[:alnum:]]
. Это похоже на[^abc]
:начальный знак вставки заставляет выражение в квадратных скобках соответствовать всем символам, кроме перечисленных.
Чтобы сопоставить буквальное тире, нужно убедиться, что оно не интерпретируется как создание списка совпадающих символов. Сделайте его первым символом выражения в квадратных скобках:[-,.;/()_]
.
Обратите внимание, что sed не принимает /
в качестве разделителя для s///
, если оно находится в выражении в квадратных скобках, поэтому нет необходимости ставить перед ним обратную косую черту. (Обратная косая черта будет соответствовать самой себе. ). echo 'a\b/c' | sed 's/[/\]/./g'
печатает a.b.c
.
См., например, справочную страницуregex(7)
для описания синтаксиса регулярных выражений. (Обратите внимание, что в основном обсуждаются расширенные регулярные выражения (ERE ), используемые sed -E
во многих/большинстве sed.)
Клиент в конфигурации бакулы для вашего сервера должен называться $(hostname -s)-fd
.
Кроме того, это работает на RHEL, но должно работать и в вашем случае. Основной причиной должно быть то, что ваше имя хоста содержит -
.
Вы можете редактировать файл /usr/share/rear/prep/BACULA/default/50 _check _BACULA _bconsole _results.sh. строка ниже определяет, как определяется имя клиента. Этот клиент должен существовать в bconsole.
# /usr/share/rear/prep/BACULA/default/50_check_BACULA_bconsole_results.sh
(...)
BACULA_CLIENT=`grep $(hostname -s) /etc/bacula/bacula-fd.conf | grep "\-fd" | awk '{print $3}' | cut -d"-" -f1`
(...)
Замените подходящим именем клиента, убедитесь, что он называется $(hostname -s)-fd
.