最近在论坛里面有不少人发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}"
评论 (0)