在《基于ubuntu18.04搭建双线adsl路由器和私有云服务器(samba、ftp和http)》一文中对于adsl断线重拨后自动更新路由表的脚本,少了自动平衡双线adsl流量的命令,将导致某条adsl线路断线重后,系统将只能使用一条adsl线路,现对自动更新路由表的autoupdatert脚本内容更正如下:
sudo nano /usr/bin/autoupdatert

#!/bin/bash
#
#This script is auto update route table UC and GD, which already built
tmpstr=".0"
logsct="0"
#
adsL0="ppp0"
#第一个拨号成功的adsl连接,对应网卡enxd3和联通adsl猫
enxd3="enxd3"
#enxd3网卡设备名(使用ifconfig命令查看),对应ppp0和联通猫
IP0=""
#网卡enxd3拨号成功后获取的动态IP
IP_A=""
#网卡enxd3拨号成功后获取的动态IP的临时存放变量
CU_GW=""
#网卡enxd3拨号成功后获取的联通网关的IP
CU_NET=""
#网卡enxd3拨号成功后获取的动态IP所属的网段
#
adsL1="ppp1"
#第二个拨号成功的adsl连接,对应网卡enxd7和广电adsl猫
enxd7="enxd7"
#enxd7网卡的设备名,对应ppp1和广电猫
IP1=""
#网卡enxd7拨号成功后获取的动态IP
IP_B=""
#网卡enxd7拨号成功后获取的动态IP的临时存放变量
GD_GW=""
#网卡enxd7拨号成功后获取的广电网关的IP
GD_NET=""
#网卡enxd7拨号成功后获取的动态IP所属的网段
#
eth1="enp1s0"
#eth1网卡的设备名,对应内网网段LC_NET1
eth2="enxfb"
#eth2网卡的设备名,对应内网网段LC_NET2
LC_NET1="169.254.219.0"
#内网网段1,对应eth1
LC_NET2="169.254.218.0"
#内网网段2,对应eth2
#
while true
#设定循环条件一直成立,程序启动后除非手动kill进程,否则一直运行
doif [ -e /run/ppp0.pid ]; then#如果ppp0进程号存在,说明存在ppp0这个连接IP0=`ifconfig $adsL0 | sed ':a ; N;s/\n/ / ; t a ; ' | awk -v head="inet " -v tail="  net" '{print substr($0, index($0,head)+length(head),index($0,tail)-index($0,head)-length(head))}' | sed s/[[:space:]]//g`#通过ifconfig命令获取ppp0拨号成功后获取的动态IP,sed将所有行合并为一行,awk获取指定头尾字符间的字符,sed去除空格if [ "$IP_A" = "" ] || [ "$IP_A" != "$IP0" ]; then#如果ppp0的动态IP变量为空(第一次循环),或ppp0的动态IP变量值与最新测到的ppp0的动态IP值不一样CU_GW=`ifconfig $adsL0 | sed ':a ; N;s/\n/ / ; t a ; ' | awk -v head="tion" -v tail="ppp " '{print substr($0, index($0,head)+length(head),index($0,tail)-index($0,head)-length(head))}' | sed s/[[:space:]]//g`#通过ifconfig命令获取ppp0拨号成功后获取的网关IP,sed将所有行合并为一行,awk获取指定头尾字符间的字符,sed去除空格CU_NET=${IP0%.*}#删除ppp0动态IP最后一个.号及右边的字符CU_NET=${CU_NET%.*}#删除ppp0动态IP最后一个.号及右边的字符CU_NET=$CU_NET$tmpstr$tmpstr#补齐.0.0形成ppp0动态IP的所属网段ip route flush table CU#清空table名为CU的联通路由表ip route add $CU_NET dev $adsL0 src $IP0 table CU#增加从ppp0的IP到所属网段的路由到路由表CU中ip route add default via $CU_GW table CU#增加ppp0的连接的ISP网关IP,与上句合起来作用为在CU路由表中设定,如果要从内网到达$CU_NET,需要从网卡ppp0出去ip rule add from $IP0 table CU#添加策略路由,从ppp0对应的动态IP来的数据包均遵从路由表CU的规定ip route add $LC_NET1 dev $eth1 table CU#增加本地网段地址1到网卡1的路由,确保从网卡eth1所属的本地网NET1传入的数据包能进入联通路由表ip route add $LC_NET2 dev $eth2 table CU#增加本地网段地址2到网卡2的路由,确保从网卡eth2所属的本地网NET2传入的数据包能进入联通路由表ip route add 127.0.0.0/8 dev lo table CU#建立网卡设备的本地回环IP_A=$IP0#将新的ppp0动态IP赋值给中间变量date >> /var/log/autoupdatertlog#输出当前时间到日志文件echo $adsL0 "flushed to route table CU" >> /var/log/autoupdatertlog#输出“刷新新的静态路由到路由表CU”到日志文件中if [ -e /run/ppp1.pid ]; then#ppp0和ppp1都存在时ip route replace default scope global nexthop dev ppp0 weight 70 nexthop dev ppp1 weight 30#weight 70和weight 30表示ppp0分担系统流量的70%(联通网络宽带高于广电网络),ppp1分担30%#如果都设置为weight 1则表示联通和广电网络各分担系统总流量的50%date >> /var/log/autoupdatertlogecho "route rules replaced with ppp0 weight 70 and ppp1 weight 30" >> /var/log/autoupdatertlogelseip route replace default scope global nexthop dev ppp0#ppp1不存在而ppp0存在时,设置ppp0承担系统100%的流量date >> /var/log/autoupdatertlogecho "警告!route rules replaced with only ppp0! 请检查ppp1拨号网络连接!" >> /var/log/autoupdatertlogfififi
#if [ -e /run/ppp1.pid ]; thenIP1=`ifconfig $adsL1 | sed ':a ; N;s/\n/ / ; t a ; ' | awk -v head="inet " -v tail="  net" '{print substr($0, index($0,head)+length(head),index($0,tail)-index($0,head)-length(head))}' | sed s/[[:space:]]//g`if [ "$IP_B" = "" ] || [ "$IP_B" != "$IP1" ]; thenGD_GW=`ifconfig $adsL1 | sed ':a ; N;s/\n/ / ; t a ; ' | awk -v head="tion" -v tail="ppp " '{print substr($0, index($0,head)+length(head),index($0,tail)-index($0,head)-length(head))}' | sed s/[[:space:]]//g`GD_NET=${IP1%.*}GD_NET=${GD_NET%.*}GD_NET=$GD_NET$tmpstr$tmpstrip route flush table GDip route add $GD_NET dev $adsL1 src $IP1 table GDip route add default via $GD_GW table GDip rule add from $IP1 table GDip route add $LC_NET1 dev $eth1 table GDip route add $LC_NET2 dev $eth2 table GDip route add 127.0.0.0/8 dev lo table GDIP_B=$IP1date >> /var/log/autoupdatertlogecho $adsL1 "flushed to route table GD" >> /var/log/autoupdatertlogif [ -e /run/ppp0.pid ]; then#ppp0和ppp1都存在时ip route replace default scope global nexthop dev ppp0 weight 70 nexthop dev ppp1 weight 30#weight 70和weight 30表示ppp0分担系统流量的70%(联通网络宽带高于广电网络),ppp1分担30%#如果都设置为weight 1则表示联通和广电网络各分担系统总流量的50%date >> /var/log/autoupdatertlogecho "route rules replaced with ppp0 weight 70 and ppp1 weight 30" >> /var/log/autoupdatertlogelseip route replace default scope global nexthop dev ppp1#ppp1存在而ppp0不存在时,设置ppp1承担系统100%的流量date >> /var/log/autoupdatertlogecho "警告!route rules replaced with only ppp1! 请检查ppp0拨号网络连接!" >> /var/log/autoupdatertlogfiip route flush cache#刷新路由表缓存fifi
#let logsct++#日志数量自增1if [ "$logsct" -gt 2222 ]; then#如果日志数量大于2222echo "" > /var/log/autoupdatertlog#清空日志文件logsct="0"#日志数量归零fisleep 222#每222秒循环一次
done

然后
sudo nano ~/.bashrc
在文件最后加上以下语句,以便在每次登陆终端时看到autoupdatert产生的警告信息:
cat /var/log/autoupdatertlog | awk ‘END {print}’ | sed -n ‘/警告/p’
#读取/usr/bin/autoupdatert程序的日志文件的最后一行,如果有警告内容则在登陆时显示出来。

对基于ubuntu18.04搭建双线adsl路由器和私有云服务器(samba、ftp和http)一文的更正2相关推荐

  1. 对基于ubuntu18.04搭建双线adsl路由器和私有云服务器(samba、ftp和http)一文的更正

    在<基于ubuntu18.04搭建双线adsl路由器和私有云服务器(samba.ftp和http)>一文中有两处错误,更正如下: 1)"7b. 配置双线adsl路由表" ...

  2. 基于Ubuntu18.04下深度学习服务器搭建

    基于Ubuntu18.04下深度学习服务器搭建 目录: 基于Ubuntu18.04下深度学习服务器搭建 主要模块组成 Anaconda安装 CUDA安装 pytorch安装 CuDNN安装 其他常用指 ...

  3. ubuntu18.04搭建SLAM环境 转 高翔 十四讲匹配环境

    ubuntu18.04搭建SLAM环境_stjuliet的博客-CSDN博客_ubuntu安装slam

  4. Ubuntu18.04搭建Android源码编译环境

    一.前言 使用Ubuntu18.04搭建Android源码的编译,本文是参考Android系统源码编译文章撰写的. 二.步骤 1.下载Android源码.Ubuntu环境搭建.git安装请参考其他文章 ...

  5. Ubuntu18.04搭建FTP服务器

    Ubuntu18.04搭建FTP服务器 1.安装vsftpd sudo apt-get install vsftpd 2.启动 service vsftpd start 3.查看运行状态 servic ...

  6. ubuntu18.04搭建Mysql,C++连接Mysql数据库

    ubuntu18.04搭建Mysql,用C++去连接数据库 搭建Mysql环境 ubuntu18.04搭建Mysql链接 切记:虽然可以使用ubuntu自带的sudo命令进行安装,但是安装的版本不是最 ...

  7. ubuntu18.04搭建spark

    参考博文: https://blog.csdn.net/weixin_42001089/article/details/82346367 Hadoop 在安装和配置spark之前,先安装并配置好had ...

  8. 私有云服务器搭建及ssh连接

    私有云服务器搭建及ssh连接 一.私有云服务器搭建 1. 镜像选择 因为我这次搭建服务器就是为了项目部署,所以镜像我选择的是Ubuntu Server 18.04,大家可以去Ubuntu官网进行下载. ...

  9. 企业应该如何搭建私有云服务器数据中心?需要注意哪些问题

    近几年来云计算成为热门话题,随着企业业务增多也开始搭建私有云平台,那么企业如何建设私有云平台? 一.做好融合基础架构规划 企业对于私有云的投资并非一个全新的投资项目,可通过整合企业当前现有IT基础设施 ...

最新文章

  1. 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用
  2. sd卡 写卡阻塞_Sony a7r4写卡速度测试
  3. 第三次学JAVA再学不好就吃翔(part27)--自定义工具类
  4. gdal库对ENVI文件的一点支持不好
  5. jQuery中,选择器既匹配开头又匹配结尾
  6. 论文排版怕翻车?这个排版神器是时候用起来了!
  7. Python 字符串查找子串的方法之 index() 和 find()
  8. TCP客户端服务器(Python)
  9. 怎么把python添加到path_如何将python的路径加到path中
  10. php 加tab键,php 生成Tab键或逗号分隔的CSV
  11. 导弹拦截(NOIP2010 普及组第三题)
  12. 如何用 Lua 查询青云的主机
  13. hacker rank bash
  14. element ui表格打印_element-ui 表格打印
  15. 如何通过自学成为一名安卓软件开发工程师?
  16. UPUPOO返回码格式!!!
  17. 8个成语接龙首尾相连_八拜为交成语接龙
  18. js中的设计模式之中介者模式
  19. DS1042C数字示波器的波形截图流程
  20. 电脑上的ofd格式文件如何打开呢_OFD格式的文件怎么打开预览?,来充电吧

热门文章

  1. DTU基础知识普及手册
  2. Android键盘自定义表情包,关于自定义表情键盘...
  3. 对于机器学习的几点理解
  4. 墨干V1.1.0: 新一代结构化编辑器的雏形
  5. 个人爆发式成长的25种思维 | 筛选思维
  6. 内部存储器——①静态存储器
  7. 2017年问题汇总-待整理
  8. 微信小程序摄像头监控_微信小程序读取摄像头 微信调用摄像头
  9. 软件设计的七大原则 --开闭原则 里氏替换原则 依赖倒置原则
  10. mysql分组排列的查询语句_数据的排序与分组语句_MySQL