
すべての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