主備機房出口切換 python腳本

在前東家的時候,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"
相關文章
相關標籤/搜索