Это невозможно и никогда не было, AFAIK. Это хорошо объясняется в Linux keyboard and console HOWTO : история отображения консоли использует видеопамять, которая сбрасывается при переключении консоли.
При смене виртуальных консолей содержимое экрана старого VT копируется в память ядра, а содержимое экрана нового VT копируется из памяти ядра в видеопамять. Копируется только видимый экран, а не вся видеопамять, поэтому переключение консолей означает потерю информации об обратной прокрутке.
Попробуйте:
/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
Все они предполагают, что в системе есть правильно настроенный агент пересылки почты.
На моих системах работает следующее:
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
во время выполнения скрипта, чтобы узнать, почему сообщение может не доставляться.