获取IP子网段并更新阿里云安全组规则

update-secgroup.sh

此脚本从电信官网获取IP(宽带为电信)并处理成子网网段;

使用阿里云客户端工具 "aliyun-cli" 更新 ECS 的安全组规则(需提前配置阿里云客户端工具,参考文档:https://help.aliyun.com/zh/cli/install-cli-on-linux

#!/bin/bash

work_path="/usr/local/update-secgroup"
request=""
SUB_NET=""


get_subnet() {
  request=$(curl -sk https://speedtp3.sc.189.cn:8299/ip/ipv4)

  if [ "$?" -eq 0 ]; then
    PRE_IP=$(echo $request | awk -F '"' '{print $(NF-1)}' | cut -d '.' -f 1,2)
    SUB_NET=${PRE_IP}".0.0/16"
  else
    logs
    exit 1
  fi
}

check_subnet() {
  if ! grep -q "$SUB_NET" "${work_path}/ip_list.txt"; then
    echo $SUB_NET
    update_aliyun_sec_group
    echo $SUB_NET >> ${work_path}/ip_list.txt
    update ${work_path}/ip_list.txt
  fi
  logs
}

update_aliyun_sec_group() {
  date +"%F %T" >> ${work_path}/aliyunSecGroup.log
  aliyun ecs AuthorizeSecurityGroup --region cn-chengdu --RegionId cn-chengdu --SecurityGroupId sg-2vc07xnnr7j1ahxq8x9n --SourceCidrIp $SUB_NET --IpProtocol TCP --PortRange 8000/8000 --Description frp >> ${work_path}/aliyunSecGroup.log 2>&1
  aliyun ecs AuthorizeSecurityGroup --region cn-chengdu --RegionId cn-chengdu --SecurityGroupId sg-2vc07xnnr7j1ahxq8x9n --SourceCidrIp $SUB_NET --IpProtocol TCP --PortRange 8500/8500 --Description frp_web >> ${work_path}/aliyunSecGroup.log 2>&1
  echo >> ${work_path}/aliyunSecGroup.log
}

logs() {
  date +"%F %T" >> ${work_path}/ip.log
  echo $request >> ${work_path}/ip.log
  echo >> ${work_path}/ip.log
}


main() {
  if ! [ -e "${work_path}/ip_list.txt" ]; then
    curl -o ${work_path}/ip_list.txt https://yunwei361.oss-cn-chengdu.aliyuncs.com/ws/iplist.txt
  fi

  get_subnet
  check_subnet
  
}

main

Last updated