#!/usr/bin/env bash
DOMAIN=""
TLD=""
RDAP_URL="https://rdap.centralnic.com/${TLD}/domain/${DOMAIN}"
INTERVAL=30
LOG_DIR="./rdap_logs"
LAST_FILE="${LOG_DIR}/last.json"
BOT_TOKEN=""
CHAT_ID=""
mkdir -p "$LOG_DIR"
echo "[*] RDAP Monitor started for $DOMAIN"
echo "[*] Interval: ${INTERVAL}s"
echo "[*] Source: $RDAP_URL"
echo
while true; do
TS=$(date -u +"%Y-%m-%d %H:%M:%S UTC")
TMP_FILE="${LOG_DIR}/rdap_$(date -u +%Y%m%d_%H%M%S).json"
HTTP_CODE=$(curl -s -w "%{http_code}" \
-H "Accept: application/rdap+json" \
-o "$TMP_FILE" \
"$RDAP_URL")
if [ "$HTTP_CODE" != "200" ]; then
echo "[$TS] HTTP ERROR: $HTTP_CODE"
sleep "$INTERVAL"
continue
fi
STATUS=$(jq -r '.status[]?' "$TMP_FILE" | tr '\n' ',' | sed 's/,$//')
LAST_CHANGED=$(jq -r '.events[]? | select(.eventAction=="last changed") | .eventDate' "$TMP_FILE")
LAST_UPDATE=$(jq -r '.events[]? | select(.eventAction=="last update of RDAP database") | .eventDate' "$TMP_FILE")
REGISTRAR=$(jq -r '.entities[]? | select(.roles[]?=="registrar") | .vcardArray[1][1][3]' "$TMP_FILE")
NS=$(jq -r '.nameservers[]?.ldhName' "$TMP_FILE" | tr '\n' ',' | sed 's/,$//')
echo "[$TS]"
echo " Status : $STATUS"
echo " Registrar : $REGISTRAR"
echo " Nameservers : $NS"
echo " LastChanged : $LAST_CHANGED"
echo " RDAPUpdate : $LAST_UPDATE"
echo
NORM_TMP="${TMP_FILE}.norm"
NORM_LAST="${LAST_FILE}.norm"
jq -S '(.events |= (map(select(.eventAction != "last update of RDAP database")) // .))' \
"$TMP_FILE" > "$NORM_TMP"
if [ -f "$NORM_LAST" ]; then
if ! diff -q "$NORM_LAST" "$NORM_TMP" >/dev/null; then
echo "⚠️ [$TS] RDAP DATA CHANGED (excluding RDAPUpdate)!"
echo "----------------------------------"
diff "$NORM_LAST" "$NORM_TMP" | head -n 80
echo "----------------------------------"
msg="[$TS] 🚨 RDAP DATA CHANGED!
Domain: $DOMAIN
Status: $STATUS
Registrar: $REGISTRAR
Nameservers: $NS
LastChanged: $LAST_CHANGED
RDAPUpdate: $LAST_UPDATE"
echo "发送通知: $msg" >> /root/signer/rdap.log
curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
--data-urlencode "chat_id=${CHAT_ID}" \
--data-urlencode "text=${msg}" \
>/dev/null
fi
fi
cp "$TMP_FILE" "$LAST_FILE"
cp "$NORM_TMP" "$NORM_LAST"
sleep "$INTERVAL"
done
这家伙太懒了,什么也没留下。
给楼主投上 1 枚硬币
当前您的硬币余额:0