Ну, что происходит, когда вы делаете перенаправление stdin (<
), так это то, что первый файл - и только первый - открывается и его содержимое передается в stdin mail
, который использует его в качестве тела.
Поскольку ваша реализация mailx
старая, она не поддерживает флаг -a
текущей версии для создания MIME-вложений. Вместо этого вы можете создать формат MIME самостоятельно, используя имеющиеся возможности.
К счастью, это несложно сделать с помощью простого bash-скрипта (который, я уверен на 100%, доступен даже на RHEL 5 :-) ), что-то простое, как это, вероятно, подойдет:
#!/bin/bash
msgid="$RANDOM$RANDOM$RANDOM$RANDOM"
to="$1"
shift
subject="$1"
shift
echo "To: $to"
echo "From: secret-admirer@example.com"
echo "Subject: $subject"
echo "Message-ID: $msgid"
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/mixed; boundary=$msgid"
echo "" # header termination
while [ -n "$1" ]; do
echo "--$msgid"
echo "Content-Type: text/plain; charset=UTF-8"
echo "Content-Disposition: attachment; filename=\"$(basename $1)\""
echo "Content-Transfer-Encoding: base64"
echo ""
base64 < "$1"
shift
done
Затем вам нужно только отправить полученный текст письма в sendmail
для доставки, что-то вроде этого:
mail.sh "$SUBJECT" "$EMAIL" /home/user/checks/notprocessed.txt \
/home/user/checks/dirlist.txt | sendmail -t
Этот сценарий использует команду base64
для "ASCII-бронирования" файлов, поэтому вы можете отправлять как текстовые, так и двоичные файлы, хотя, если вы не отправляете текстовые файлы, вам, вероятно, нужно выяснить, как правильно установить Content-type
вложения (или просто изменить его на application/octet-stream
, т.е. "двоичный"). т.е. "двоичный"). Эта команда доступна в составе coreutils на RHEL 5, поэтому я не ожидаю, что возникнут проблемы с ее использованием.
Также обратите внимание на использование флага -t
в sendmail
, чтобы MTA просто считывал конверт письма из самого письма, поэтому нет необходимости вводить что-либо еще в аргументы команды sendmail
. Просто убедитесь, что скрипт включает все необходимые поля в вывод - я заставил его читать получателя и тему из командной строки, как это делает mailx
, но это не обязательно, а адрес отправителя все равно жестко закодирован.
Похоже, что для этой проблемы не существует ssh-решения.
Итак, я реализовал функцию bash для псевдонима ssh:
function ssh {
set_title $1
$(which ssh) $@
set_title "$(whoami) @$(hostname)"
}
Поскольку моя проблема в основном связана с интерактивными сеансами ssh, это работает для меня.
Не ssh
конкретно, но, как вы упоминаете bash
, вы рассматривали ~/.bash_logout
? Может быть, расширено специальным разделом ssh
?