모든 Jenkins 서버를 고려하고 연결을 확인하는 Jenkins 파이프라인 작업이 있습니다(몇 분마다 실행됨).
.ksh 파일:
#!/bin/ksh
JENKINS_URL=$1
curl --connect-timeout 10 "$JENKINS_URL" >/dev/null
status=`echo $?`
if [ "$status" == "7" ]; then
export SUBJECT="Connection refused or can not connect to URL $JENKINS_URL"
echo "$SUBJECT"|/usr/sbin/sendmail -t [email protected]
else
echo "successfully connected $JENKINS_URL"
fi
exit 0
서버가 다운될 때마다(서버의 이름과 타임스탬프가 포함되어야 함) 기록하는 또 다른 코드를 파일에 추가하고, 서버가 다시 작동하면 이에 대한 이메일 알림을 보내고 해당 내용도 아카이브. 추가 알림을 받고 싶지 않습니다. 알림이 꺼질 때(파일 및 메일) 한 번, 다시 시작할 때 한 번만 받고 싶습니다. 이것을 구현하는 방법을 아시나요?
답변1
#!/bin/ksh
JENKINS_URL=$1
# extract just the host and potental port number from the url
HOSTP=${JENKINS_URL#*:} ; HOSTP=${HOSTP%%/*}
# Create down directory if it doesn't exist
[ -d down ] || mkdir -p down
curl --connect-timeout 10 "$JENKINS_URL" >/dev/null
status=$?
if [ "$status" == "7" ]; then
[ -e "down/$HOSTP" ] && exit 0
{ echo -n "$HOSTP down " ; date } >> times
touch "down/$HOSTP"
SUBJECT="Connection refused or can not connect to URL $JENKINS_URL"
echo "$SUBJECT"|/usr/sbin/sendmail -t [email protected]
else
echo "successfully connected $JENKINS_URL"
[ -e "down/$HOSTP" ] || exit 0
rm "down/$HOSTP"
{ echo -n "$HOSTP up " ; date } >> times
fi
exit 0