отправить письмо с выходными столбцами awk - PullRequest
0 голосов
/ 05 февраля 2019

Можете ли вы помочь мне отправить электронное письмо, если столбец $ 3 превышает 100, например?

   host@root:> report_alias  | awk '{ if($3 >= 100) { mailx -s "FILES REPORT" < "FLOW" $1,$2,$3 " has problems" example@host.ro ;}}'
    awk: { if($3 >= 100) { mailx -s "FILES REPORT" < "FLOW" $1,$2,$3 " has problems" example@host.ro ;}}
    awk:                                                      ^ syntax error
    awk: { if($3 >= 100) { mailx -s "FILES REPORT" < "FLOW" $1,$2,$3 " has problems" example@host.ro ;}}
    awk:                                                                                     ^ syntax error
    awk: { if($3 >= 100) { mailx -s "FILES REPORT" < "FLOW" $1,$2,$3 " has problems" example@host.ro ;}}
    awk:   

Вывод «псевдоним отчета»

Flow REPORT 1 3,450 has problems
Flow REPORT 2 3,154 has problems
Flow REPORT 3 134 has problems
Flow REPORT 4 134 has problems
Flow REPORT 5 has problems
Flow REPORT 6 has problems

1 Ответ

0 голосов
/ 05 февраля 2019

Попробуйте это.

report_alias |
awk '$3 >= 100 { print "FLOW" $1, $2, $3 " has problems"}' |
mailx -s "FILES REPORT" example@host.ro

Это отправит пустое сообщение, если от Awk нет вывода.Обычный обходной путь - сохранить выходные данные во временный файл, проверить, не является ли он пустым, и только если нет, отправить сообщение.

#!/bin/sh

t=$(mktemp -t report_alias.XXXXXXXXX) || exit
trap 'rm -f $t' EXIT
trap 'exit 1' HUP INT TERM

report_alias |
awk '$3 >= 100 { print "FLOW" $1, $2, $3 " has problems"}' >"$t"

if [ -s "$t" ]; then
    mailx -s "FILES REPORT" example@host.ro <"$t"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...