在前東家的時候,A 機房出口偶發會掛掉,須要切換到備機房B-IDC 出口。全自動化腳本是不可能的,只能半自動化腳本進行切換。基本上就是在覈心上把A機房的路由幹掉,轉化指向B機房。若是A機房出口恢復再反向切換回來。A機房使用的是華爲核心交換、B機房使用的是思科的核心交換,比較有表明性。腳本作過實際測試,而且在大促的時候成功的切換過流量,減小了損失。我的感受仍是很是有價值的一件事情 。如今把腳本分享出來僅供語法格式參考,全部ip已作更改。
#! /usr/bin/env python import pexpect import sys child = pexpect.spawn('telnet 10.1.1.250') fout = file('huawei.txt','w') child.logfile = fout child.expect("Username:") child.sendline('admin') child.expect('Password:') child.sendline('密碼') child.expect('>') # for test child.sendline('sys') child.expect(']') child.sendline('') #child.sendline('sys') child.expect(']') child.sendline('undo ip route-static 0.0.0.0 0.0.0.0 10.11.12.254') child.expect(']') child.sendline('ip route-static 0.0.0.0 0.0.0.0 172.32.4.2') child.expect(']') child.sendline('ip route-static 0.0.0.0 0.0.0.0 172.32.5.2') child.expect(']') child.sendline('quit') print "YJ-IDC changed finished" child = pexpect.spawn('telnet 10.12.2.1') fout = file('cisco.txt','w') child.logfile = fout child.expect("Username:") child.sendline('admin') child.expect('Password:') child.sendline('密碼') child.expect('>') child.sendline('en') child.expect('Password:') child.sendline('密碼') child.expect('#') child.sendline('conf t') child.expect('#') child.sendline('') child.expect('#') child.sendline('') child.expect('#') child.sendline('ip route 172.17.0.0 255.255.0.0 172.32.2.1') child.expect('#') child.sendline('ip route 172.17.0.0 255.255.0.0 172.32.3.1') child.expect('#') child.sendline('ip route 0.0.0.0 0.0.0.0 10.1.1.254') child.expect('#') child.sendline('no ip route 0.0.0.0 0.0.0.0 172.32.2.1') child.expect('#') child.sendline('no ip route 0.0.0.0 0.0.0.0 172.32.3.1') child.expect('#') child.sendline('exit') child.expect('#') child.sendline('exit') print "ALL OF changed outside route finished"