localhost 연결이 거부되었을 때 이메일을 보내도록 bash 스크립트를 작성 중인데, 연결이 열리면 이메일을 쓰지 않아야 합니다. 예를 들어:
netcat -z localhost 8287
if [ $? -ne 0 ]; then
echo " Connection refused" |/usr/lib/sendmail -s "Port doesn't function " [email protected]
else
echo "open"
fi
이 bash 스크립트를 시작하면 작동하지 않습니다. sendmail을 메일로 바꾸고 sendEmail도 교체했지만 매번 다른 오류가 발생합니다.
답변1
내 시스템에서는 다음이 작동합니다.
if ! nc -z $host $port; then
echo "This message intentionally left blank" | mail -s "TCP port $port is not open on $host" $emailaddress
else
: Do whatever you wanted to do
fi
시스템에 존재하지 않는 경우 tail -f /var/log/maillog
스크립트를 실행하여 메시지가 전달되지 않는 이유를 확인하세요.
답변2
노력하다:
/usr/lib/sendmail -oi -t << EOF
Subject: Port doesn't function
To: [email protected]
Connection refused
EOF
이는 상당히 이식성이 있어야 합니다( sendmail
에 있는 /usr/lib
한 다른 위치를 시도하거나 /usr/sbin
존재하지 않는 경우 찾아볼 수도 있습니다) sendmail
.$PATH
-oi
이다아니요단일 행의 종결자로 "."을 고려하십시오(여기에서는 필요하지 않지만 일반적으로 유용함).
POSIX 호환 시스템에서는 다음도 사용할 수 있습니다 mailx
.
echo Connection refused | mailx -s "Port doesn't function" [email protected]
이 모든 것은 시스템에 메일 전송 에이전트가 올바르게 구성되어 있다고 가정합니다.