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지정된 순서대로 표준 입력으로 전달됩니다.

관련 정보