0

动态IP家宽vps被墙自动换IP脚本

 1 year ago
source link: https://vpsxb.net/4376/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

有时我们使用香港或者台湾的动态IP家宽vps,大部分商家都是支持api自助更换IP的,目前大部分的做法是设置定时任务,固定一个时间更换IP,或者是我们都是发现了IP被墙,然后手动去执行更换IP的命令,但是小白发现这样还是不够智能,如果我们能实现实时检测IP是否被墙,如果被墙了就更换IP,岂不美哉?

202305031107635.png

检测IP是否被墙脚本

我们先来写一个检测IP是否被墙的脚本,小白这里使用的是ping命令,脚本如下:



  1. #!/bin/bash
  2. # 获取IP地址
  3. ip_address=$(curl -s ifconfig.me)
  4. # 执行ping命令,并检查结果
  5. if ping -c 5 -W 2 -i 0.2 www.itdog.cn | grep "100% packet loss" > /dev/null
  6. echo "当前IP已经被封锁"
  7. echo "当前IP未被封锁"

这里稍微说明下,这个脚本使用curl命令获取当前主机的公网IP地址,并将其保存在变量ip_address中。然后,它使用ping命令来ping这个网站www.itdog.cn,并在5次ping尝试中每次ping等待2秒钟。如果ping命令返回的结果中包含“100% packet loss”等错误,则说明您的IP可能被封锁了。否则,脚本将输出“当前IP未被封锁”。

小白这里采用的itdog,你可以采用其他任意网站或者境内IP,但是这里有两点说明:

1.此网站的域名必须是域名ping的,如果禁ping了,回造成一直提示当前IP已被封锁。
2.此网站必须没有境外cdn节点,因为如果这个网站存在境外cdn节点,那会一直提示当前IP未被封锁。具体可通过itdog.cn查看该网站是否存在境外cdn节点。

请注意,这个脚本可能需要适当的修改,以确保它能够正常工作并符合您的要求。同时,这个方法也可能不是100%准确,并且可能会受到网络拥堵、临时封锁等因素的影响。因此,建议您结合多种方法和工具,以获得更准确的检测结果。

我们已将脚本内容保存到test.sh,来看下实际效果:



  1. root@debian ~ # bash test.sh
  2. 当前IP未被封锁
  3. root@C2023 ~ # bash test.sh
  4. 当前IP已经被封锁

配合api换IP命令

现在,假设我们的api换IP名利为:



  1. curl http://10.10.9.6/changeip/changeip.aspx

我们将换IP的命令与上面的检测IP是否被墙命令配合起来即可,具体脚本如下:



  1. #!/bin/bash
  2. # 获取IP地址
  3. ip_address=$(curl -s ifconfig.me)
  4. # 执行ping命令,并检查结果
  5. if ping -c 5 -W 2 -i 0.2 www.itdog.cn | grep "100% packet loss" > /dev/null
  6. echo "当前IP已经被封锁,正在尝试换IP..."
  7. # 执行换IP的命令
  8. curl http://10.10.9.6/changeip/changeip.aspx
  9. echo "IP已经更换完成。"
  10. echo "当前IP未被封锁"

在这个脚本中,当IP被封锁时,它会输出一条信息,指示它正在尝试更换IP,并执行换IP的命令。然后,它输出另一条信息,指示IP已经更换完成。如果IP未被封锁,则仅输出一条信息,指示当前IP未被封锁。

请注意,这个脚本中的换IP的命令是针对您特定的网络环境设置的,您需要根据您的实际情况进行修改,以确保它能够正常工作。同时,这个方法也可能不是100%准确,并且可能会受到网络拥堵、临时封锁等因素的影响。因此,建议您结合多种方法和工具,以获得更准确的检测结果。

加入定时任务

如果您希望在特定的时间间隔内自动执行这个脚本,可以使用Linux系统中的定时任务工具——crontab。您可以通过编辑crontab文件来设置定时任务,让系统在指定的时间自动执行脚本。

我们将脚本保存为script.sh,记得给执行权限:chmod +x script.sh

以下是一个示例命令,用于打开crontab文件并添加定时任务:

crontab -e
然后,将以下行添加到crontab文件中,以在每小时的第5分钟执行您的脚本:
5 * * * * /bin/bash /path/to/your/script.sh >/dev/null 2>&1
如果封锁情况严重,我们可以提高脚本运行频率,比如,每隔一分钟检测一次:
*/1 * * * * /bin/bash /path/to/your/script.sh >/dev/null 2>&1 
请将/path/to/your/script.sh替换为您脚本的实际路径。

VPS小白 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK