脚本版的KS-A补货检测及使用说明
昨天发了go版的,不过会搭建go开发环境进行编译的人毕竟不多,发编译后的二进制码也不是我作风。今天发一个bash脚本版的吧。
感谢cctv,感谢gpt,这代码是直接让它改写的go,我没有改动。测试了一下没问题。
我说说使用步骤:
- 把代码保存到服务器上这个不用说了吧,比如名字叫ovh.sh,然后 chmod +x ovh.sh了。当然,不加x也可以,那就运行的时候bash ovh.sh。
- 在telegram中,加 @botfather ,建立一个自己的机器人,好了后,注意保存 token 。怎么建自己网上查吧。当然,如果你有机器的人话,直接用它就可以了。
- 在tg中,加 @userinfobot , 获得自己的 id。
- 自己加自己的bot,一定要 /start ,简单说,自己和自己bot说句话。这样bot才有权限发消息给自己。
- 安装jq,如果你没有的话。 sudo apt install jq
- 安装screen,如果你没有的话, sudo apt install screen
- 运行 screen,进去后, ./ovh.sh 你的token 你的id
- ctrl-ad退出screen。 然后等待吧。
为了验证上面的tg参数是否正确,可以在第6步后, ./ovh.sh 你的token 你的id test 试运行一下,它会报告法国有货,即发送通知到Tg: Server availability changed to: 72H in datacenter: bhs。没问题的话就ctrl-c,然后继续第7步。
#!/bin/bash
if [ "$#" -lt 2 ]; then
echo "Usage: $0 <telegram_bot_token> <chat_id> [test]"
exit 1
fi
TELEGRAM_BOT_TOKEN=$1
CHAT_ID=$2
TEST_MODE=$3
API_URL="https://ca.ovh.com/engine/apiv6/dedicated/server/datacenter/availabilities/?excludeDatacenters=false&planCode=24ska01&server=24ska01"
send_telegram_notification() {
local datacenter=$1
local availability=$2
local message="Server availability changed to: $availability in datacenter: $datacenter"
echo "Sending notification: $message"
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d "chat_id=$CHAT_ID" \
-d "text=$message" >/dev/null
echo "Notification sent."
}
check_availability() {
echo "Fetching server availability data..."
response=$(curl -s "$API_URL")
if [ -z "$response" ]; then
echo "Failed to fetch data."
return
fi
echo "Received JSON response: $response"
if [ "$TEST_MODE" == "test" ]; then
echo "Test mode enabled. Forcing bhs datacenter availability to 72H."
response=$(echo "$response" | jq '.[0].datacenters |= map(if .datacenter == "bhs" then .availability = "72H" else . end)')
fi
echo "$response" | jq -c '.[0].datacenters[]' | while read -r datacenter; do
availability=$(echo "$datacenter" | jq -r '.availability')
name=$(echo "$datacenter" | jq -r '.datacenter')
echo "Checking datacenter: $name, availability: $availability"
if [ "$availability" != "unavailable" ]; then
echo "Availability change detected: $availability in datacenter: $name"
send_telegram_notification "$name" "$availability"
break
fi
done
echo "Finished checking all datacenters."
}
while true; do
check_availability
sleep 60
done