朝花夕拾1-脚本抓取O365新增地址

在一个整体上网流量进行管控的项目里,出口防火墙上默认是黑名单,而既存流量中包含了O365这样经常有访问URL变动的应用,于是产生了对不定期新增访问IP/URL需要了解,并添加到出口防火墙对应组进行添加并放行的需求,包括但不限于cloudwan等模式网络结构中。

O365分为国际和国内两种,对应管理方为【全球 (+GCC)】和【21 Vianet世纪互联】。

Microsoft 365 URL 和 IP 地址范围 - Microsoft 365 Enterprise | Microsoft Learn

Shell脚本编程目的是为了抓取新增ip或URL,和既存基准文件对比找出增量部分,

并邮件通知相关人员。

第一部分:设置基本变量,下载整体JSON文件到本地

#!/bin/bash
# to fetch ips dest address from o365 server address by json format
# modified on 2023-5-6
##Part-1###########
##Define var####
O365GLOBAL="/opt/o365/global2"
MAILADD1="xxx"
O365GLOBALSITE="https://endpoints.office.com/endpoints/worldwide?clientrequestid=b10c5ed1-bad1-445f-b386-b919946339a7"

##Get office-365 global json file
wget -O $O365GLOBAL/global-o365.json $O365GLOBALSITE

第二部分:使用jq命令循环解析json,sed去掉带【::】IPv6内容,去掉带中括号的起始结束行,去掉空行,并追加输出到ips_global.temp的一个临时文件里;对于ip处于最后一行末尾没有逗号的加上逗号以统一格式。最后用sort -k2n排序,产生一个带当天执行日期的新文件;因为一直没超过200条数据,循环300次足够了。

##Part-2####
##to filter ips part for dst_ip
for ((i=0; i<300; i++))
do
ips=`jq .[$i].ips $O365GLOBAL/global-o365.json |sed '/::/d'|sed '/\[/d'|sed '/\]/d'|sed '/null/d'`
if [ "$ips" != "" ]
then
    echo "$ips" >>$O365GLOBAL/ips_global.temp
fi
done

cat $O365GLOBAL/ips_global.temp|
while read line
do
     echo $line|grep -q -E '\,$' && `echo $line >> $O365GLOBAL/ips2_global`||`echo $line|sed  's/$/,/' >> $O365GLOBAL/ips2_global`
done

sort -k2n $O365GLOBAL/ips2_global| uniq>> $O365GLOBAL/ips_global_`date +%Y%m%d`

第三部分同理对URL字段处理,不赘述。

第四部分comm命令对基准文件和新处理的文件处理,找出新文件增量部分并邮件通知相关人员;

有新增时处理新文件为新基准文件,没有新增地址时简单mv到bak文件夹,没有新增url时也给人员每天发邮件以确保脚本活着。。

##Part-4#####
##compare current with original files to notify
#
compare_result1=""
compare_result2=""
compare_result1=$(comm  -13 $O365GLOBAL/ips_global $O365GLOBAL/ips_global_`date +%Y%m%d`)
compare_result2=$(comm  -13 $O365GLOBAL/urls_global $O365GLOBAL/urls_global_`date +%Y%m%d`)
#
if (( ${#compare_result1} !="0" || ${#compare_result2} !="0" ))
then
  echo "$compare_result1   $compare_result2"|mail -s "global o365 check result-incremental ip/url added" $MAILADD1 
  cp $O365GLOBAL/ips_global_`date +%Y%m%d` $O365GLOBAL/BASEFILE
  cp $O365GLOBAL/urls_global_`date +%Y%m%d` $O365GLOBAL/BASEFILE
  mv -f $O365GLOBAL/ips_global_`date +%Y%m%d` $O365GLOBAL/ips_global
  mv -f $O365GLOBAL/urls_global_`date +%Y%m%d` $O365GLOBAL/urls_global
else
  echo "no changes found in ips/url"|mail -s "global o365 check result-fine" $MAILADD2
  mv -f $O365GLOBAL/ips_global_`date +%Y%m%d` $O365GLOBAL/BAKFILE
  mv -f $O365GLOBAL/urls_global_`date +%Y%m%d` $O365GLOBAL/BAKFILE
fi

第五部分,处理脚本运行产生的临时文件

rm -f $O365GLOBAL/ips2_global  urls_global.temp ips_global.temp urls2_global global-o365.json
以上是抓取O365新增地址脚本的基本样式,国内O365是一样的实际内容更少。

不足之处:只抓取了增量部分,对减量部分无视掉了,为了减少脚本报错几率,偷个懒。。

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值