开发面试题 计算机基础知识 iis search Draggabilly js获取数组第一个元素 maven插件 office配置进度 div字体加粗 python解析json数据 python的extend python自学教材 python插件 java实现接口 java入门教程 java当前时间 java的输入 linux服务器 高效能人士的七个习惯下载 主板芯片组天梯图 手机知识 虚拟打印机安装 视频加字幕软件 什么模拟器最好 R语言初学者指南 java获取时间戳 视频加文字用什么软件 pr蒙版 坐标标注插件 骰子gif winhex中文版下载 mac修改器 起义任务线 vs2017密钥 jdk9 pr怎么旋转视频画面 求字符串长度的函数 凯立德地图下载 东莞证券财富通下载 dos常用命令
当前位置: 首页 > 学习教程  > 编程语言

使用脚本,定时检测线路是否可达,并管理策略路由

2020/8/31 14:51:57 文章标签:

因为公司有两条日常使用线路,电信和香港,香港有时因为运营商问题导致丢包率高,或者不可达时。需要手动切换防火墙上策略路由进行停用线路,使业务可以正常使用。为了方便,使用python进行线路可达判断和操作策略路由。
import paramiko #paramiko远程控制模块
import time
import os

def Firewall():
    status1 = "!!!!!!!!!!!!!!!!!!!HK line alive!!!!!!!!!!!!!!!!!!!!"
    status2 = "!!!!!!!!!!!!!!!!!!!HK line unreachable!!!!!!!!!!!!!!!!!"

    fping = os.popen("/usr/bin/ping -c 10 IP | grep loss | cut -d  ' ' -f 6")
    line = fping.read()
    pingloss = line.split('%')
    pingloss = int(pingloss[0])
    standardPing = 25

    sshFirewall = paramiko.SSHClient()
    sshFirewall.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    sshFirewall.connect(hostname='防火墙IP', port=端口, username='账号', password='密码',allow_agent=False,look_for_keys=False)
    sshConnect = sshFirewall.invoke_shell()

    if pingloss < standardPing:
        print status1
        sshConnect.send('dis policy-based-route rule name hk \n')
        sshConnect.send('dis policy-based-route rule name hk_gfw \n')
        time.sleep(1)
        result = sshConnect.recv(5000).decode()
        print result
        if 'disable'in result:
            sshConnect.send('sys \n')
            sshConnect.send('policy-based-route \n')
            sshConnect.send('rule name hk \n')
            sshConnect.send('enable \n')
            sshConnect.send('rule name hk_gfw \n')
            sshConnect.send('enable \n')
            print '\n ----HK line alive,enable hk and hk_gfw policy routing---- \n'

            time.sleep(1)
            sshFirewall.close()
        else:
            print '\n ----HK line alive,hk and hk_gfw policy routing has been enabled,no operation is required---- \n'
            sshFirewall.close()
            exit()
    else:
        print status2
        sshConnect.send('sys \n')
        sshConnect.send('policy-based-route \n')
        sshConnect.send('rule name hk \n')
        sshConnect.send('disable \n')
        sshConnect.send('Y \n')
        sshConnect.send('rule name hk_gfw \n')
        sshConnect.send('disable \n')
        sshConnect.send('Y \n')
        time.sleep(1)
        result = sshConnect.recv(5000).decode()
        print result
        print '\n ----HK line unreachable,hk and hk_gfw policy routing disable successful---- \n'
        sshFirewall.close()

if __name__ == '__main__':
    Firewall()


本文链接: http://www.dtmao.cc/news_show_150300.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?