'sendmail' ненадежно отправляет уведомление, которое инициируется выводом 'logread'

sed может сделать это самостоятельно:

sed -e '5,${/MNO/s/DEF/ABC/g;}'

Это:

  1. Выбирает для действия только строки с 5 до конца с кодом в фигурных скобках.
  2. Затем далее выбираются только те строки из этого набора, которые содержат MNO, для действия с командой замены sдля замены DEFна ABCв этих строках.

Все остальные строки печатаются без изменений.

0
29.11.2021, 08:14
1 ответ

Решил.

Причина, по которой это не работало, заключалась в том, что, поскольку logread -fявляется постоянным отслеживанием журнала , буфер sendmailникогда не закрывался, и, следовательно, почта никогда не отправлялась, пока процесс не был завершен. прекращено.

#!/bin/ash

logread -f | awk ' /control connection started/ { 
    print "From: R01 Router <myemail@email.com>" > "awkout.txt"
    print "To: "myemail@email.com" >> "awkout.txt"
    print "Mime-Version: 1.0" >> "awkout.txt"
    print "Content-Type: text/plain" >> "awkout.txt"
    print "Subject: Incoming PPTP connection from " $10 >> "awkout.txt"
    print "Content-Transfer-Encoding: 7bit" >> "awkout.txt"
    print "Incoming PPTP connection from " $10 >> "awkout.txt"
    system("ssmtp myemail@email.com < awkout.txt");
    } ' &

Этот код будет отправлять электронное письмо каждый раз, когда awk находит совпадение. Надеюсь, это поможет любому, кто пытается отслеживать лог-чтение в OpenWrt

.
0
29.11.2021, 11:10

Теги

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