Основываясь на предыдущем вопросе, упомянутом в OP, самый простой способ отправить сообщение с помощью одной командной строки выполняется следующим образом:
Самый простой способ отправить однострочное письмо -через командную строку с помощью gmail?
ВЫДЕРЖКА:
Установите ssmtp
с помощью следующих команд:
sudo apt-get update
sudo apt-get install ssmtp
Затем перейдите в /etc/ssmtp и отредактируйте ssmtp.conf, чтобы он выглядел следующим образом:
root=rpi3abc@gmail
mailhub=smtp.gmail.com:465
FromLineOverride=YES
AuthUser=rpi3abc@gmail.com
AuthPass=testing123
UseTLS=YES
Отправить один -лайнер вот так:
echo "Testing...1...2...3" | ssmtp myusername@gmail.com
Когда эта часть завершена, отправить вложение с одной строкой также просто.
Сначала установитеmpack
:
sudo apt-get update
sudo apt-get install mpack
затем, следуя сценарию с отправкой файла pl12.png пользователю abc@def.com, это выполняется с помощью следующей единственной командной строки:
mpack -s "12-Volt Battery Pack plot" /home/pi/python/pl12.png abd@def.com
Если файл находится в текущем каталоге, то нет необходимости использовать полный -путь.
cron
Задания всегда выполняются в домашнем каталоге пользователя, поэтому всегда рекомендуется использовать полный путь каталога к файлу вложения.
Думаю, так и должно быть:
grep -E '([5-9][0-9]{3}|[0-9]{5,})ms' | grep -v 5000ms
Как это работает?
-E
, поэтому регулярное выражение имеет "современный" формат (, также называемый расширенным ). В нашем случае это просто упрощает набор текста, так как мы можем сэкономить несколько \
символов. (...|...)ms
ищет две альтернативы, за которыми следует строка ms
. Это необходимо, поскольку регулярное выражение не может сравнивать числа, поэтому я не могу сказать что-то вроде >= 5000
. [5-9][0-9]{3}
, которая будет соответствовать любой строке, которая начинается с числа от 5 до 9, за которым следуют 3 вхождения чисел от 0 до 9. Это все числа >= 5000 и < 10000. grep -v 5000ms
, чтобы отфильтровать любое вхождение 5000ms
, потому что вы сказали больше чем 5000. Если вы хотите больше или равно, просто оставьте это. Где узнать больше?
Считайте man 1 grep
и man 7 regex
.
Как правило, вам следует избегать попыток построить числовые сравнения из регулярных выражений. -Используйте что-то вроде awk
или perl
, которые могут выполнять реальные числовые сравнения, например.
gawk -v x=5000 'match($0,/([0-9]+)ms/,a) && a[1]+0 > x' file.log
или
perl -ne 'print if /(\d+)ms/ && $1 > 5000' file.log