Bash-скрипт для отправки электронной почты в одной командной строке

Это невозможно и никогда не было, AFAIK. Это хорошо объясняется в Linux keyboard and console HOWTO : история отображения консоли использует видеопамять, которая сбрасывается при переключении консоли.

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

2
14.11.2018, 21:24
2 ответа

Попробуйте:

/usr/lib/sendmail -oi -t << EOF
Subject: Port doesn't function
To: mit@gmail.com

Connection refused
EOF

Что должно быть достаточно переносимым (если sendmail находится в / usr / lib , вы можете попробовать несколько других мест, например / usr / sbin , или просто использовать sendmail для поиска $ PATH , если его там нет).

-oi означает не рассматривать "." на одной строке в качестве терминатора (здесь не нужен, но полезен в общем случае).

В POSIX-совместимых системах вы также должны иметь возможность использовать mailx :

echo Connection refused | mailx -s "Port doesn't function" mit@gmail.com

Все они предполагают, что в системе есть правильно настроенный агент пересылки почты.

0
27.01.2020, 22:10

На моих системах работает следующее:

if ! nc -z $host $port; then
    echo "This message intentionally left blank" | mail -s "TCP port $port is not open on $host" $emailaddress
else
    : Do whatever you wanted to do
fi

Если на ваших не работает, запустите tail -f /var/log/maillog во время выполнения скрипта, чтобы узнать, почему сообщение может не доставляться.

2
27.01.2020, 22:10

Теги

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