16 Star 45 Fork 46

现任明教教主-乾颐堂/qytang_Python

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
2016.2.1 Auto-Rack-ClearASA 2.37 KB
一键复制 编辑 原始数据 按行查看 历史
现任明教教主-乾颐堂 提交于 2016-02-01 21:47 . new file
#!/usr/bin/python3
from telnetlib import Telnet
import re
import time
def clearasa(username, password, rackno, asano):
if rackno == 'BJRack01':
rackip = '172.17.100.111'
elif rackno == 'BJRack02':
rackip = '172.17.100.112'
elif rackno == 'BJRack03':
rackip = '172.17.100.113'
portno = 2006 + int(asano)
tn = Telnet(rackip, portno)
#正则表达式匹配各种状态
# yesorno = re.compile(r'.*Please answer.*')
exc = re.compile(r'.*>.*')
configure = re.compile(r'.*config.*')
priv = re.compile(r'.*#.*')
clearconfig = re.compile(r'ciscoasa(\(config\))?#')
#多次回车确认状态
tn.write(b'\r\n')
tn.read_very_eager()
time.sleep(1)
tn.write(b'\r\n')
tn.read_very_eager()
time.sleep(1)
tn.write(b'\r\n')
tn.read_very_eager()
time.sleep(1)
tn.write(b'\n')
tn.write(b'\n')
tn.write(b'\32\n')
time.sleep(1)
tn.write(b'\n')
tn.write(b'\n')
tn.write(b'\32\n')
#获取位置状态信息
rackreply = tn.expect([],timeout=1)[2].decode().strip()
#基于状态采取行为
while True:
if configure.match(rackreply):
#全局配置模式
tn.write(b'\n')
time.sleep(2)
print('match configure')
break
elif exc.match(rackreply):
#执行模式
tn.write(b'\n')
tn.write(b'en\n')
time.sleep(1)
tn.write(b'\n')
tn.write(b'configure terminal\n')
tn.write(b'n\n')
print('match exec')
break
elif priv.match(rackreply):
#特权模式
tn.write(b'\n')
time.sleep(2)
tn.write(b'\n')
tn.write(b'configure terminal\n')
tn.write(b'n\n')
print('match priv')
break
else:
tn.write(b'\r\n')
time.sleep(1)
tn.write(b'\r\n')
tn.read_very_eager()
print('next')
rackreply = tn.expect([],timeout=1)[2].decode().strip()
#继续回车确认状态
tn.write(b'\n\n\n')
tn.read_very_eager()
#获取状态信息
rackreply = tn.expect([],timeout=1)[2].decode().strip()
if clearconfig.match(rackreply):
#如果是空配置,就保持此状态
tn.close()
print(tn.read_all())
else:
#如果有配置就清空配置重启
tn.write(b'configure terminal\n')
tn.write(b'changeto system\n\n\n')
tn.write(b'clear config all\n\n\n')
tn.close()
print(tn.read_all())
print(rackno + ': ASA' + str(asano) + 'cleared')
if __name__ == "__main__":
clearasa('labtest', 'Cisc0123', 'BJRack01', 1)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/qytang/qytang_Python.git
git@gitee.com:qytang/qytang_Python.git
qytang
qytang_Python
qytang_Python
master

搜索帮助