众所周知,由于不可描述的原因,中国大陆无法访问 Telegram 服务,当在中国大陆服务器上,需要调用 Telegram Bot 来作为消息告警通知,该如何解决呢?
解决思路:在境外服务器上搭建一个socks5代理,并设置源IP访问设置。
这里假设一个需求:
监控一台位于新加坡的一台VPS的公网端口服务,能否正常被中国大陆IP访问,如果端口被ban,请发送告警至Telegram Bot
以下是Shell代码
#!/bin/bash # Telegram bot token and chat ID TELEGRAM_BOT_TOKEN="2637456424:AAEOK9n4w4v7RWTCaW2D7SPioqLllOFSfSM" TELEGRAM_CHAT_ID="1257379104" PROXY="socks5h://100.154.38.181:1080" # Target IP and ports TARGET_IP="67.230.166.146" PORTS=(10001 10002 10003 10004 10005 ) # Function to send Telegram message send_telegram_message() { local message="$1" curl -s -x $PROXY -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" -d chat_id=$TELEGRAM_CHAT_ID -d text="$message" } # Check each port for port in "${PORTS[@]}"; do nc -z -w5 $TARGET_IP $port if [ $? -ne 0 ]; then send_telegram_message "Port $port on $TARGET_IP is not reachable." fi done