最近在论坛里面有不少人发leaseweb下游hostdzire的活动引起了我的注意,便宜大碗,于是产生了剁手的念头,但是对印度分销商无感,搜了一下论坛发现有人以自由职业者身份注册到了账号,于是斗胆尝试,几经波折顺利注册到了leaseweb的账号下单了lax 4c6g的机器,测试结果见:/post-395912-1

在下单页面可以看到机器自带一个快照,在账号后台创建API后就能通过API创建删除快照,请Claude给我写了一个自动创建快照的脚本,100g的硬盘可以利用起来了,其他vps有重要的东西通过ssh传到这个机器上再通过定时任务打个快照,数据又多了一份保障。

脚本功能比较简单,先查询机器的所有快照,有的话全部删除,然后创建一个快照,确保创建快照的时候机器没有快照,以免超过免费数量多扣钱(超过1个是否扣钱以及扣多少钱尚不清楚,有没有知道的朋友分享一下)。

脚本如下,配置一下机器ID和API key之后,就可以根据自己的情况设置定时任务了:

#!/bin/bash# 设置变量ID=""KEY=""# 颜色输出RED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[1;33m'NC='\033[0m' # No Colorecho -e "${GREEN}开始处理机器 ID: ${ID}${NC}"# 1. 查询机器快照列表echo -e "${YELLOW}正在查询快照列表...${NC}"response=$(curl -s --request GET \  --url "https://api.leaseweb.com/publicCloud/v1/vps/${ID}/snapshots" \  --header "X-LSW-Auth: ${KEY}")echo "响应内容: $response"# 检查是否返回错误if echo "$response" | jq -e '.errorCode' > /dev/null 2>&1 || echo "$response" | jq -e '.errorMessage' > /dev/null 2>&1; then    error_code=$(echo "$response" | jq -r '.errorCode // "N/A"')    error_message=$(echo "$response" | jq -r '.errorMessage // "N/A"')    echo -e "${RED}查询快照失败!${NC}"    echo -e "${RED}错误代码: ${error_code}${NC}"    echo -e "${RED}错误信息: ${error_message}${NC}"    exit 1fi# 检查是否有快照snapshot_count=$(echo "$response" | jq -r '._metadata.totalCount')if [ "$snapshot_count" -eq 0 ]; then    echo -e "${GREEN}没有发现快照,直接创建新快照${NC}"else    echo -e "${YELLOW}发现 ${snapshot_count} 个快照,开始删除...${NC}"    # 获取所有快照ID    snapshot_ids=$(echo "$response" | jq -r '.snapshots[].id')    # 删除每个快照    for snapshot_id in $snapshot_ids; do        echo -e "${YELLOW}正在删除快照: ${snapshot_id}${NC}"        delete_response=$(curl -s --request DELETE \          --url "https://api.leaseweb.com/publicCloud/v1/vps/${ID}/snapshots/${snapshot_id}" \          --header "X-LSW-Auth: ${KEY}")        # 检查删除是否成功        if [ $? -eq 0 ]; then            echo -e "${GREEN}快照 ${snapshot_id} 删除成功${NC}"        else            echo -e "${RED}快照 ${snapshot_id} 删除失败${NC}"        fi    done    # 等待1分钟    echo -e "${YELLOW}等待60秒后重新检查...${NC}"    sleep 60    # 重新查询确认快照已删除    echo -e "${YELLOW}重新查询快照列表以确认删除...${NC}"    verify_response=$(curl -s --request GET \      --url "https://api.leaseweb.com/publicCloud/v1/vps/${ID}/snapshots" \      --header "X-LSW-Auth: ${KEY}")    verify_count=$(echo "$verify_response" | jq -r '._metadata.totalCount')    if [ "$verify_count" -eq 0 ]; then        echo -e "${GREEN}确认所有快照已删除${NC}"    else        echo -e "${RED}警告:仍有 ${verify_count} 个快照未删除,退出脚本${NC}"        echo "剩余快照信息: $verify_response"        exit 1    fifi# 2. 创建新快照timestamp=$(date +"%Y%m%d%H%M")echo -e "${YELLOW}正在创建新快照,名称: ${timestamp}${NC}"curl -s --request POST \  --url "https://api.leaseweb.com/publicCloud/v1/vps/${ID}/snapshots" \  --header "X-LSW-Auth: ${KEY}" \  --header 'content-type: application/json' \  --data "{\"name\":\"${timestamp}\"}"echo -e "${GREEN}快照创建请求已发送,脚本执行完成!${NC}"