를 사용하여 이메일을 보내려고 합니다. 내가 원하는 것은 명령의 출력이 포함된 이메일을 받는 것이지만 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
지정된 순서대로 표준 입력으로 전달됩니다.