在前东家的时候,A 机房出口偶发会挂掉,需要切换到备机房B-IDC 出口。全自动化脚本是不可能的,只能半自动化脚本进行切换。基本上就是在核心上把A机房的路由干掉,转化指向B机房。如果A机房出口恢复再反向切换回来。A机房使用的是华为核心交换、B机房使用的是思科的核心交换,比较有代表性。脚本做过实际测试,并且在大促的时候成功的切换过流量,减少了损失。个人感觉还是非常有价值的一件事情 。现在把脚本分享出来仅供语法格式参考,所有ip已做更改。
#! /usr/bin/env pythonimport pexpectimport syschild = pexpect.spawn('telnet 10.1.1.250') fout = file('huawei.txt','w')child.logfile = foutchild.expect("Username:")child.sendline('admin')child.expect('Password:')child.sendline('输入密码')child.expect('>')# for testchild.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 = foutchild.expect("Username:")child.sendline('admin')child.expect('Password:')child.sendline('cisco@123')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"