Как добавить '\n' в конец каждой строки в файле журнала

Во-первых, вам не следует анализировать вывод lsи его вариантов. Вы можете сделать это, используяstat:

$ stat -c%U-%G./*
tomasz-tomasz
tomasz-tomasz
tomasz-tomasz

Как видите, результатом является надежный список из двух соединенных слов, с которым вы можете работать, чтобы получить желаемый результат. Поместите его в петлю, и все готово:

PASS=true
for i in $(stat -c%U-%G./*); do
    if ! [[ "$i" == root-root ]]; then
        PASS=false; break
    fi
done
if "$PASS"; then
    echo Pass
else
    echo Fail
fi

Значение iдолжно быть равно root-root, чтобы цикл дошел до своего конца с неизмененным переключателем.

Замените ./*на the_dir/*, чтобы проверить другое местоположение.

Разделитель -необходим, потому что, как заметил Grump в комментариях, Сравнение строк может завершиться ошибкой, если файл принадлежит 'roo' и находится в группе 'troot', поэтому разделитель все равно будет быть хорошей вещью.

Ознакомьтесь с этим:Почему *не *parse `ls`(и что делать вместо )?

1
27.03.2020, 18:12
2 ответа

Я предполагаю, что почтовый инструмент ожидает \r\n. Это также окончание строки, используемое в продуктах Microsoft. (они (или, может быть, авторы CP/M )не знали, как преобразовывать его при отправке на принтер, поэтому в качестве обходного пути каждый файл заканчивался этой строкой. msmtpмогут иметь свои причины. ).

Поэтому попробуйте передать его через unix2dos.

т.е.

echo -e "This is a test. $(tail -5 /var/log/syslog)" | unix2dos | msmtp @domain

Кроме того, если вы не собираетесь использовать эхо для интерпретации журнала. я бы сделал

{
  echo -n "This is a test. "
  tail -5 /var/log/syslog
} |
  unix2dos | 
  msmtp 
0
19.03.2021, 02:31

Это очень просто. Входными данными для msmtpдолжно быть правильно отформатированное почтовое сообщение с заголовками и телом. В конце концов, это еще одна капля -вместо /usr/{bin,lib}/sendmail. Вы не отделили заголовки от тела или вообще не создали никаких заголовков. Строки вашего системного журнала обрабатываются как (какие-то очень странные заголовки ).

заголовки. новая линия. тело. Сгенерируйте это.

1
19.03.2021, 02:31

Теги

Похожие вопросы