shell对比两个列表的不同找出缺失的路由

#!/bin/bash 
route_list=(103.235.168.0/24 172.17.0.0/16 172.18.0.0/16 172.19.0.0/16 172.20.32.0/24)
route_line=`ip route | wc -l`

declare -a result_list
index=0
for((a=2;a<=${route_line};a++));do
   server=`ip route | awk 'NR=='$a'{print $1}'`
   result_list[$index]=$server
   let index+=1
done

echo route_list=${route_list[@]}
echo result_list=${result_list[@]}


declare -a differ_list
flag=0
n=0
for i in "${route_list[@]}"
    do
    for j in "${result_list[@]}"
       do
          if [ "$i" == "$j" ];then
             flag=1 #给这里标记一个值的意思,如果第一个i=j的时候,flag=1,就不会走到29行。同时跳出第二个循环。继续走第二遍i
             break
          fi
       done
    if [ $flag -eq 0 ];then
       differ_list[n]=$i
       let n+=1
    else
       flag=0
    fi
done
echo differ_list=${differ_list[@]}

for m in "${differ_list[@]}"
   do 
       这些就是命令行ip route缺了的路由,在这里添加吧
don

 

py就比较好写了

#!/usr/bin/env python3

import os

Netsegment=[10.6.98.0/23\n,10.103.5.0/24\n,156.255.80.0/22\n]

def Ip_Match():
      Matchip = os.popen("ip route | grep -Ev default | awk '{print $1}'").readlines()
      for ip in  Netsegment:
           if ip not in  Matchip:
                print(ip.split("\n")[0])
                insert_ip = ip.split("\n")[0]
                os.popen(f"ip route add {insert_ip} via 10.6.98.1")

def main():
       Ip_Match()

if __name__ == '__main__' :
    main()

 

 

这个脚本我自己回来一看,卧槽,一下子还不能看懂,不写注释的懒虫就是这样了吧。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值