(共556篇)
全部分类

定时获取公网的IP信息
[ 未分类 ] 

公司没有购买固定IP, 内网在链接云服务器的时候, 总是因为白名单问题链接失败, 这里提供一个定时查询公网IP的脚本

简单案例

大体思路是拿获取到的公网IP,与保存在本地的IP历史记录的最后一条记录作对比, 如果与上一次记录的IP地址不同, 则通过某种方式通知开发团队, 下面的代码以通知钉钉群机器人为例

需要两个文件:/root/check.ship.history.

check.sh是具体执行的脚本内容, ip.history用来保存IP记录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ip=$(curl --silent ifconfig.me)
old=$(tail -n -1 ip.history)
# ip=$1
# echo $old'-'$ip

# if [[ -z "$old" ]]; then
#   echo "old is empty"
# fi
#
# if [[ -n "$old" ]]; then
#   echo "old is not empty"
# fi
#
# if [[ -z "$ip" ]]; then
#   echo "ip is empty"
# fi
#
# if [[ -n "$ip" ]]; then
#   echo "ip is not empty"
# fi

if [[ -n "$ip" && $ip != $old ]];then
  echo $ip>>ip.history
  curl 'https://oapi.dingtalk.com/robot/send?access_token=f6cfd14c917b93bb6de069b84636d5e51de97a0b6bd764fa8e4536343refr' -H 'Content-type:application/json' -d '{"msgtype":"text","text":{"content":"告警: 公网IP已变更为'"${ip}"', 请及时更新微信小程序,mysql,ES,Redis白名单"}}'
fi

添加定时任务

在公司内部服务器上添加如下定时任务

1
2
# 在每天的9点至18点期间, 每隔1分钟更新一次公司公网IP状态
*/1 9-18 * * * sh /root/chech