/ 实用工具 / 246 浏览

免费获取Warp的免费v4出口,解决一直获取不到warp的ip

warp 一键脚本

wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh

warp-go 一键脚本

wget -N https://gitlab.com/fscarmen/warp/-/raw/main/warp-go.sh && bash warp-go.sh

输入上面的其中一个命令后会显示你要的语言,再选择需要的出口,一般是选择获取v4出口即可,本机默认是有ipv6的。

如果一直获取不到warp的ip,用这个命令获取warp出口:

wg-quick down warp &>/dev/null; sed -i "s/Endpoint.*/Endpoint = engage.cloudflareclient.com:4500/" /etc/wireguard/warp.conf; warp o

 

 

如果warp的v4老是掉,自动重新获取warp的ip脚本:

 


#!/bin/bash

# --- 配置 ---
# Ping 的目标地址 (使用IPv4地址确保测试IPv4连通性)
TARGET="1.1.1.1"
# Ping 的次数
COUNT=5
# 每次循环后等待的秒数
SLEEP_INTERVAL=10
# 最大重试次数 (避免无限循环)
MAX_RETRY=3

# --- 锁文件配置 ---
LOCK_FILE="/tmp/$(basename $0).lock"

# --- 日志颜色配置 ---
GREEN="\033[0;32m"
RED="\033[0;31m"
YELLOW="\033[1;33m"
BLUE="\033[0;34m"
NC="\033[0m" # No Color

# --- 进程锁检查 ---
if [ -e "$LOCK_FILE" ]; then
log_message="脚本已在运行中,本次执行自动退出。锁文件: ${LOCK_FILE}"
echo -e "${YELLOW}${log_message}${NC}"
logger "${log_message}"
exit 1
fi

# --- 设置陷阱,确保脚本退出时删除锁文件 ---
trap 'rm -f "$LOCK_FILE"; echo -e "${BLUE}清理锁文件并退出${NC}"' EXIT

# --- 创建锁文件 ---
touch "$LOCK_FILE"

# --- 函数:检测IPv4连通性 ---
check_ipv4_connectivity() {
# 使用ping测试IPv4连通性,超时设置为3秒
if ping -4 -q -c ${COUNT} -W 3 ${TARGET} &>/dev/null; then
return 0 # 连通
else
return 1 # 不通
fi
}

# --- 函数:获取丢包率 ---
get_loss_rate() {
local loss=$(ping -4 -q -c ${COUNT} -W 3 ${TARGET} 2>/dev/null | grep -oP '\d+(?=% packet loss)')
if [ -z "$loss" ]; then
echo "100"
else
echo "$loss"
fi
}

# --- 函数:重新获取WARP v4出口 ---
reset_warp_v4() {
echo -e "${YELLOW}正在重新获取WARP v4出口...${NC}"

# 执行你提供的命令来重置WARP v4出口
wg-quick down warp &>/dev/null
sed -i "s/Endpoint.*/Endpoint = engage.cloudflareclient.com:4500/" /etc/wireguard/warp.conf
warp o &>/dev/null

# 等待一段时间让连接稳定
sleep 5

echo -e "${BLUE}WARP v4出口重置完成${NC}"
}

# --- 函数:检查是否为root用户 ---
check_root() {
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}错误: 此脚本需要root权限才能执行${NC}"
echo -e "${YELLOW}请使用: sudo $0${NC}"
exit 1
fi
}

# --- 主程序 ---
echo -e "${GREEN}===============================================${NC}"
echo -e "${GREEN} WARP IPv4出口自动恢复脚本启动${NC}"
echo -e "${GREEN}===============================================${NC}"

# 检查root权限
check_root

log_message_start="开始执行WARP IPv4连通性检测..."
echo -e "${GREEN}${log_message_start}${NC}"
logger "${log_message_start}"

retry_count=0

# 首次检查连通性
if check_ipv4_connectivity; then
loss=$(get_loss_rate)
log_message="[丢包率 ${loss}%] IPv4网络连通正常,无需处理"
echo -e "${GREEN}${log_message}${NC}"
logger "${log_message}"
exit 0
fi

# 如果首次检查失败,开始重试循环
while [ $retry_count -lt $MAX_RETRY ]; do
retry_count=$((retry_count + 1))
loss=$(get_loss_rate)

log_message="[第${retry_count}次重试] [丢包率 ${loss}%] IPv4网络中断,正在重新获取WARP v4出口..."
echo -e "${RED}${log_message}${NC}"
logger "${log_message}"

# 重置WARP v4出口
reset_warp_v4

# 等待网络稳定
log_message_wait="等待 ${SLEEP_INTERVAL} 秒让网络稳定,然后重新检测..."
echo -e "${YELLOW}${log_message_wait}${NC}"
sleep ${SLEEP_INTERVAL}

# 重新检查连通性
if check_ipv4_connectivity; then
loss=$(get_loss_rate)
log_message_success="[丢包率 ${loss}%] IPv4网络已恢复正常!"
echo -e "${GREEN}${log_message_success}${NC}"
logger "${log_message_success}"
echo -e "${GREEN}===============================================${NC}"
echo -e "${GREEN} 脚本执行完毕,网络已恢复${NC}"
echo -e "${GREEN}===============================================${NC}"
exit 0
fi
done

# 如果达到最大重试次数仍未恢复
log_message_failed="已达到最大重试次数(${MAX_RETRY}),IPv4网络仍未恢复,请手动检查WARP配置"
echo -e "${RED}${log_message_failed}${NC}"
logger "${log_message_failed}"
echo -e "${RED}===============================================${NC}"
echo -e "${RED} 脚本执行完毕,网络未能恢复${NC}"
echo -e "${RED}===============================================${NC}"

exit 1

使用方法:

  1. 保存脚本
sudo nano /usr/local/bin/warp-monitor.sh
# 将脚本内容粘贴进去,然后保存退出
  1. 设置执行权限
sudo chmod +x /usr/local/bin/warp-monitor.sh
  1. 手动测试
sudo /usr/local/bin/warp-monitor.sh
  1. 设置定时任务(可选):
sudo crontab -e
# 添加以下行,每5分钟检查一次
*/5 * * * * /usr/local/bin/warp-monitor.sh >/dev/null 2>&1

其他定时任务教程:主要是用root用户执行这个shell脚本命令:/usr/local/bin/warp-monitor.sh
各种面板比如aapanel 1panel等都有cron,用cron执行定时任务也是可以的;
类型选:Shell脚本 执行命令为:/usr/local/bin/warp-monitor.sh 执行周期:自行设置 用户:root(确保脚本有权限操作 WARP)

更新同时检测ipv4和ipv6:

#!/bin/bash

# — 配置 —
# Ping 的目标地址
TARGET_V4=”1.1.1.1″ # IPv4测试地址
TARGET_V6=”2606:4700:4700::1111″ # Cloudflare IPv6 DNS
# Ping 的次数
COUNT=5
# 每次循环后等待的秒数
SLEEP_INTERVAL=10
# 最大重试次数 (避免无限循环)
MAX_RETRY=3

# — 锁文件配置 —
LOCK_FILE=”/tmp/$(basename $0).lock”

# — 日志颜色配置 —
GREEN=”\033[0;32m”
RED=”\033[0;31m”
YELLOW=”\033[1;33m”
BLUE=”\033[0;34m”
PURPLE=”\033[0;35m”
NC=”\033[0m” # No Color

# — 进程锁检查 —
if [ -e “$LOCK_FILE” ]; then
log_message=”脚本已在运行中,本次执行自动退出。锁文件: ${LOCK_FILE}”
echo -e “${YELLOW}${log_message}${NC}”
logger “${log_message}”
exit 1
fi

# — 设置陷阱,确保脚本退出时删除锁文件 —
trap ‘rm -f “$LOCK_FILE”; echo -e “${BLUE}清理锁文件并退出${NC}”‘ EXIT

# — 创建锁文件 —
touch “$LOCK_FILE”

# — 函数:检测IPv4连通性 —
check_ipv4_connectivity() {
# 使用ping测试IPv4连通性,超时设置为3秒
if ping -4 -q -c ${COUNT} -W 3 ${TARGET_V4} &>/dev/null; then
return 0 # 连通
else
return 1 # 不通
fi
}

# — 函数:检测IPv6连通性 —
check_ipv6_connectivity() {
# 使用ping6测试IPv6连通性,超时设置为3秒
if ping6 -q -c ${COUNT} -W 3 ${TARGET_V6} &>/dev/null; then
return 0 # 连通
else
return 1 # 不通
fi
}

# — 函数:获取IPv4丢包率 —
get_v4_loss_rate() {
local loss=$(ping -4 -q -c ${COUNT} -W 3 ${TARGET_V4} 2>/dev/null | grep -oP ‘\d+(?=% packet loss)’)
if [ -z “$loss” ]; then
echo “100”
else
echo “$loss”
fi
}

# — 函数:获取IPv6丢包率 —
get_v6_loss_rate() {
local loss=$(ping6 -q -c ${COUNT} -W 3 ${TARGET_V6} 2>/dev/null | grep -oP ‘\d+(?=% packet loss)’)
if [ -z “$loss” ]; then
echo “100”
else
echo “$loss”
fi
}

# — 函数:重新获取WARP v4出口 —
reset_warp_v4() {
echo -e “${YELLOW}正在重新获取WARP IPv4出口…${NC}”

# 执行你提供的命令来重置WARP v4出口
wg-quick down warp &>/dev/null
sed -i “s/Endpoint.*/Endpoint = engage.cloudflareclient.com:4500/” /etc/wireguard/warp.conf
warp o &>/dev/null

# 等待一段时间让连接稳定
sleep 5

echo -e “${BLUE}WARP IPv4出口重置完成${NC}”
}

# — 函数:重新获取WARP v6出口 —
reset_warp_v6() {
echo -e “${PURPLE}正在重新获取WARP IPv6出口…${NC}”

# 停止当前WARP连接
wg-quick down warp &>/dev/null

# 重新配置为IPv6端点
sed -i “s/Endpoint.*/Endpoint = [2606:4700:d0::a29f:c001]:4500/” /etc/wireguard/warp.conf

# 如果上面的IPv6端点不工作,可以尝试其他的IPv6端点
# sed -i “s/Endpoint.*/Endpoint = [2606:4700:d0::a29f:c001]:1701/” /etc/wireguard/warp.conf

# 重新启动WARP
warp o &>/dev/null

# 等待一段时间让连接稳定
sleep 5

echo -e “${BLUE}WARP IPv6出口重置完成${NC}”
}

# — 函数:重新获取WARP双栈出口 —
reset_warp_dual() {
echo -e “${PURPLE}正在重新获取WARP双栈出口…${NC}”

# 停止当前WARP连接
wg-quick down warp &>/dev/null

# 重新配置为默认端点(通常支持双栈)
sed -i “s/Endpoint.*/Endpoint = engage.cloudflareclient.com:4500/” /etc/wireguard/warp.conf

# 重新启动WARP
warp o &>/dev/null

# 等待一段时间让连接稳定
sleep 8

echo -e “${BLUE}WARP双栈出口重置完成${NC}”
}

# — 函数:检查是否为root用户 —
check_root() {
if [ “$EUID” -ne 0 ]; then
echo -e “${RED}错误: 此脚本需要root权限才能执行${NC}”
echo -e “${YELLOW}请使用: sudo $0${NC}”
exit 1
fi
}

# — 函数:处理IPv4连接问题 —
handle_ipv4_issue() {
local retry_count=0

while [ $retry_count -lt $MAX_RETRY ]; do
retry_count=$((retry_count + 1))
local loss=$(get_v4_loss_rate)

log_message=”[IPv4第${retry_count}次重试] [丢包率 ${loss}%] IPv4网络中断,正在重新获取WARP v4出口…”
echo -e “${RED}${log_message}${NC}”
logger “${log_message}”

# 重置WARP v4出口
reset_warp_v4

# 等待网络稳定
echo -e “${YELLOW}等待 ${SLEEP_INTERVAL} 秒让网络稳定,然后重新检测…${NC}”
sleep ${SLEEP_INTERVAL}

# 重新检查连通性
if check_ipv4_connectivity; then
local loss=$(get_v4_loss_rate)
log_message_success=”[丢包率 ${loss}%] IPv4网络已恢复正常!”
echo -e “${GREEN}${log_message_success}${NC}”
logger “${log_message_success}”
return 0
fi
done

return 1
}

# — 函数:处理IPv6连接问题 —
handle_ipv6_issue() {
local retry_count=0

while [ $retry_count -lt $MAX_RETRY ]; do
retry_count=$((retry_count + 1))
local loss=$(get_v6_loss_rate)

log_message=”[IPv6第${retry_count}次重试] [丢包率 ${loss}%] IPv6网络中断,正在重新获取WARP v6出口…”
echo -e “${RED}${log_message}${NC}”
logger “${log_message}”

# 重置WARP v6出口
reset_warp_v6

# 等待网络稳定
echo -e “${YELLOW}等待 ${SLEEP_INTERVAL} 秒让网络稳定,然后重新检测…${NC}”
sleep ${SLEEP_INTERVAL}

# 重新检查连通性
if check_ipv6_connectivity; then
local loss=$(get_v6_loss_rate)
log_message_success=”[丢包率 ${loss}%] IPv6网络已恢复正常!”
echo -e “${GREEN}${log_message_success}${NC}”
logger “${log_message_success}”
return 0
fi
done

return 1
}

# — 主程序 —
echo -e “${GREEN}===============================================${NC}”
echo -e “${GREEN} WARP IPv4/IPv6出口自动恢复脚本启动${NC}”
echo -e “${GREEN}===============================================${NC}”

# 检查root权限
check_root

log_message_start=”开始执行WARP IPv4/IPv6连通性检测…”
echo -e “${GREEN}${log_message_start}${NC}”
logger “${log_message_start}”

# 检查IPv4连通性
ipv4_ok=false
ipv6_ok=false

echo -e “${BLUE}正在检测IPv4连通性…${NC}”
if check_ipv4_connectivity; then
loss=$(get_v4_loss_rate)
log_message=”[IPv4] [丢包率 ${loss}%] IPv4网络连通正常”
echo -e “${GREEN}${log_message}${NC}”
logger “${log_message}”
ipv4_ok=true
else
echo -e “${RED}[IPv4] IPv4网络连接异常${NC}”
fi

# 检查IPv6连通性
echo -e “${BLUE}正在检测IPv6连通性…${NC}”
if check_ipv6_connectivity; then
loss=$(get_v6_loss_rate)
log_message=”[IPv6] [丢包率 ${loss}%] IPv6网络连通正常”
echo -e “${GREEN}${log_message}${NC}”
logger “${log_message}”
ipv6_ok=true
else
echo -e “${RED}[IPv6] IPv6网络连接异常${NC}”
fi

# 如果两者都正常,退出
if [ “$ipv4_ok” = true ] && [ “$ipv6_ok” = true ]; then
echo -e “${GREEN}IPv4和IPv6网络均正常,无需处理${NC}”
exit 0
fi

# 处理网络问题
ipv4_fixed=true
ipv6_fixed=true

# 处理IPv4问题
if [ “$ipv4_ok” = false ]; then
echo -e “${YELLOW}开始处理IPv4连接问题…${NC}”
if ! handle_ipv4_issue; then
ipv4_fixed=false
log_message_failed=”IPv4网络在${MAX_RETRY}次重试后仍未恢复”
echo -e “${RED}${log_message_failed}${NC}”
logger “${log_message_failed}”
fi
fi

# 处理IPv6问题
if [ “$ipv6_ok” = false ]; then
echo -e “${YELLOW}开始处理IPv6连接问题…${NC}”
if ! handle_ipv6_issue; then
ipv6_fixed=false
log_message_failed=”IPv6网络在${MAX_RETRY}次重试后仍未恢复”
echo -e “${RED}${log_message_failed}${NC}”
logger “${log_message_failed}”
fi
fi

# 最终状态报告
echo -e “${GREEN}===============================================${NC}”
if [ “$ipv4_fixed” = true ] && [ “$ipv6_fixed” = true ]; then
echo -e “${GREEN} 脚本执行完毕,网络已完全恢复${NC}”
exit 0
elif [ “$ipv4_fixed” = true ] || [ “$ipv6_fixed” = true ]; then
echo -e “${YELLOW} 脚本执行完毕,部分网络已恢复${NC}”
if [ “$ipv4_fixed” = false ]; then
echo -e “${RED} IPv4网络仍有问题,请手动检查${NC}”
fi
if [ “$ipv6_fixed” = false ]; then
echo -e “${RED} IPv6网络仍有问题,请手动检查${NC}”
fi
exit 1
else
echo -e “${RED} 脚本执行完毕,网络未能恢复${NC}”
echo -e “${RED} 请手动检查WARP配置${NC}”
exit 1
fi
echo -e “${GREEN}===============================================${NC}”

 

# 保存脚本
sudo nano /usr/local/bin/warp-monitor-v6.sh

# 设置执行权限
sudo chmod +x /usr/local/bin/warp-monitor-v6.sh

# 手动测试
sudo /usr/local/bin/warp-monitor-v6.sh

# 设置定时任务
sudo crontab -e
# 添加:*/5 * * * * /usr/local/bin/warp-monitor-v6.sh >/dev/null 2>&1

 

CF Tunnel 使用教程:在VPS上位网站提供更安全的防护
CF Tunnel 使用教程:在VPS上位网站提供更安全的防护
代码已写好!你只需复制粘贴,十分钟拥有自己的库存监控机器人。
代码已写好!你只需复制粘贴,十分钟拥有自己的库存监控机器人。
购买VPS后必须要做的4件事情,很重要!
购买VPS后必须要做的4件事情,很重要!
几个实用的美国地址生成器分享,再也不用担心被收税啦
几个实用的美国地址生成器分享,再也不用担心被收税啦
四个不错的宝藏网站
四个不错的宝藏网站
如何检测截图是否有盲水印,如何去除盲水印
如何检测截图是否有盲水印,如何去除盲水印

0

  1. 此文章暂无评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注