Я пытаюсь отправить электронное письмо из сценария оболочки, используя следующий код:

fileToAttach=cpu_usage.log

`(echo "To: XXXXXX@gmail.com"
  echo "From: XXXXXX@gmail.com"
  echo "Subject: Issue with CPU"
  echo  Issue with CPU
  uuencode $fileToAttach $fileToAttach
  )| eval /usr/sbin/sendmail -t `;

Но я получаю

uuencode: command not found

Есть ли способ обойти это?

0
Paulo Tomé 26 Фев 2020 в 14:38
1
ТАКЖЕ Не забывайте о пустой строке, чтобы отделить заголовки писем от тела письма. Он отсутствует в вашем образце сценария.
 – 
AnFi
26 Фев 2020 в 15:02
Обратите внимание, что, как указано на соответствующих справочных страницах: Uuencode and uudecode are used to transmit binary files over transmission mediums that do not support other than simple ASCII data.. Является ли cpu_usage.log двоичным файлом? Если нет, то вызов uuencode не имеет смысла.
 – 
Paulo Tomé
26 Фев 2020 в 15:33
Каково содержание cpu_usage.log? Это просто текст? HTML?
 – 
Paulo Tomé
26 Фев 2020 в 15:38
Просто текст. например: 2020-02-26 11:52 ЦП: 13,4%
 – 
arielma
26 Фев 2020 в 15:49
Если это просто файл, что я могу использовать вместо uuencode?
 – 
arielma
26 Фев 2020 в 16:02

1 ответ

Лучший ответ

В Red Hat команды uuencode и uudecode поставляются с пакетом sharutils.

В Red Hat Enterprise Linux 4 установите этот пакет с помощью команды up2date.

up2date sharutils

В Red Hat Enterprise Linux 5, Red Hat Enterprise Linux 6 и Red Hat Enterprise Linux 7 установите этот пакет с помощью команды yum.

yum install sharutils

Источник: Какой пакет rpm предоставляет команды "uuencode" и "uudecode"?.

РЕДАКТИРОВАТЬ:

Если цель состоит в том, чтобы отправить электронное письмо с текстовым/простым вложенным файлом, я предлагаю ввести следующие команды:

fileToAttach=cpu_usage.log

(printf "To: XXXXXX@gmail.com\n"
 printf "From: XXXXXX@gmail.com\n"
 printf "MIME-Version: 1.0\n"
 printf "Content-Type: text/plain; charset=\"US-ASCII\"\n"
 printf "Content-Transfer-Encoding: 7bit\n"
 printf "Subject: Issue with CPU\n\n"
 printf "echo  Issue with CPU\n"
 cat "$fileToAttach" 
 )| /usr/sbin/sendmail -t 

Как упоминалось в комментарии @AnFi, это решение предоставляет пустую строку для отделения заголовков электронной почты от тела электронной почты.

2
Paulo Tomé 26 Фев 2020 в 16:42
Тэнкс, попробую. Есть ли другой способ?
 – 
arielma
26 Фев 2020 в 15:06
Смотрите мой обновленный ответ.
 – 
Paulo Tomé
26 Фев 2020 в 16:42
Есть и другие кодировки (см. документацию MIME). По крайней мере, набор команд mh (на самом деле полный набор инструментов для чтения/записи почты) содержит инструменты для составления/распаковки сообщений/файлов из нескольких частей с использованием MIME.
 – 
vonbrand
27 Фев 2020 в 04:18