mailx에 stdout 메시지를 보내려고 합니다 -- Red Hat

mailx에 stdout 메시지를 보내려고 합니다 -- Red Hat

모두 도움을 주셔서 감사합니다...이 작업은 쉬울 것입니다.

내 스크립트는 그것을 stdout/terminal에 완벽하게 인쇄합니다. 스크립트에서는 아름답지만 아래에서는 그렇지 않습니다...????:

# Print to stdout
echo "------- CAPACITY TEST FAILED -------"
echo -n "  SYSTEM NAME: " ; uname -n
echo -n "  USER DETAIL: " ; whoami
echo "  PARTITION:   $PART "
echo "  USED SPACE:  $USEDSPC "
echo "  THRESHOLD LIMIT OF $THRESH% EXCEEDED"
echo "------------------------------------"

나는 많은 mailx 옵션/형식을 시도했지만 약간의 "행복한 잔치"가 나타납니다... 어떤 도움이라도 좋을 것입니다.

저는 Red Hat 서버를 어떤 식으로든, 모양이나 형태로 변경할 수 없습니다. 그리고 솔직히 그들은 제가 그것에 대해 숨쉬는 것을 원하지 않습니다. 제 임무는 Red Hat 서버에 관한 스크립트를 작성하는 것입니다! 1

답변1

일부 표준 출력을 mailx의 표준 입력으로 연결하면 이메일 내용으로 전송됩니다.

echo "test body" | mailx -s test_subject [email protected]

스크립트가 실행되어 해당 출력만 출력하는 경우 다음을 통해 원하는 결과를 얻을 수 있습니다.

/path/to/script | mailx -s subject_here [email protected]

이 bash가 더 큰 스크립트의 일부인 경우 위의 모든 줄을 하나의 큰 에코로 결합하여 모두 이메일로 보낼 수 있습니다.

echo -e "------- CAPACITY TEST FAILED -------\n  SYSTEM NAME: $(uname -n)\n  USER DETAIL: $(whoami)\n  PARTITION:   $PART \n  USED SPACE:  $USEDSPC \n  THRESHOLD LIMIT OF $THRESH% EXCEEDED\n------------------------------------" | mailx -s subject_here [email protected]

답변2

스크립트에서 "("")"를 추가하여 하위 쉘을 생성하고 해당 출력을 파이프할 수도 있습니다.

(echo "------- CAPACITY TEST FAILED -------"
 echo -n "  SYSTEM NAME: " ; uname -n
 echo -n "  USER DETAIL: " ; whoami
 echo "  PARTITION:   $PART "
 echo "  USED SPACE:  $USEDSPC "
 echo "  THRESHOLD LIMIT OF $THRESH% EXCEEDED"
 echo "------------------------------------" ) | mailx ...

관련 정보