#!/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()
这个脚本我自己回来一看,卧槽,一下子还不能看懂,不写注释的懒虫就是这样了吧。。。。。