有没有一种方法可以让 SendEmail 拥有自定义文本并在其下显示命令输出?

有没有一种方法可以让 SendEmail 拥有自定义文本并在其下显示命令输出?

我正在尝试使用发送电子邮件。我想要的是我收到一封包含命令输出的电子邮件ls,但在该输出之上我想要一个带有一些解释的自定义文本。如果我尝试-u它会覆盖我的ls命令输出。

我使用的命令:

ls home/ec2-user/client_certs/ | grep '.ovpn' | sendemail -o tls=yes -f Emailthatsendmail@company -t Myemail@company -s smtp.office365.com:587 -xu Emailthatsend@company -xp passwordemailthatsend -u "[Encrypted] Access to VPN Service" -m Users who have access to the VPN service, if something is wrong contact EMAILofCompany

为了隐私,我更改了电子邮件和密码。

结果:我收到一封加密邮件,其主题和正文是:有权访问 vpn 服务的用户,如果出现问题,请联系 EMAILofCompany

ls命令无处可寻,但如果我不使用

-m Users who have access to the VPN service, if something is wrong contact EMAILofCompany

我收到一封邮件,我可以在其中看到命令的输出,但看不到自定义消息,因为我删除了它。

我正在使用 Amazon Linux 2 AMI

SendEmail版本:sendemail-1.56

答案1

将您的自定义消息放入文件中,例如:/some/path/custom-message.txt

然后:

(cat /some/path/custom-message.txt; ls -d home/ec2-user/client_certs/*?ovpn*) | sendemail -o tls=yes -f Emailthatsendmail@company -t Myemail@company -s smtp.office365.com:587 -xu Emailthatsend@company -xp passwordemailthatsend -u "[Encrypted] Access to VPN Service"

理由:

使用该-m选项,sendemail从选项参数中获取消息并完全忽略管道标准输入。您不希望这样,所以不要使用该-m选项。相反,通过添加括号,括号内的所有命令/管道的输出都会sendemail按指定的顺序进入 的标准输入。

相关内容