Chinaunix
标题:
请教一个关于路由器多命令执行(5000条左右)程序
[打印本页]
作者:
rikimaru_a
时间:
2015-11-04 14:45
标题:
请教一个关于路由器多命令执行(5000条左右)程序
由于应用需要和设备自身限制的原因,需要telnet登录设备后,逐条命令在路由器上执行,并记录结果.
大部分结果应该是为空白的.用python或者expect都行.
之前参考过
http://bbs.chinaunix.net/thread-4177907-1-1.html
这个帖子的程序,但是这个是采用了多进程登陆多台设备,和我这个情况不同.我只是需要登陆一台设备,并执行多条命令.
先谢谢了!
作者:
jixuuse
时间:
2015-11-04 16:18
可以的,问题是你不好判断设备输出的结果时间,,结果直接在log中查看即可,中间的那些sleep都是在等待设备输出
执行的时候执行bash xx.py >> log.log
#!/usr/bin/python
import telnetlib
import time
host='10.10.10.10'
username='admin'
password='huawei123'
finish='(config)]#'
tn=telnetlib.Telnet(host)
tn.set_debuglevel(7)
tn.read_until('[.login .] Login:>')
tn.write(username+'\n')
tn.read_until('[.password .] Password:>')
tn.write(password+'\r\n')
tn.read_until('[%eSpace U1960]>')
tn.write('en\r\n')
tn.read_until('[.password .] Password:>')
tn.write(password+'\r\n')
tn.read_until('[%eSpace U1960(config)]#')
tn.write('config conference cancel confid 7\n')
time.sleep(5)
tn.write('config conference cancel confid 6\n')
time.sleep(5)
tn.write('config conference cancel confid 5\n')
time.sleep(5)
tn.write('config conference cancel confid 4\n')
time.sleep(5)
tn.write('config conference cancel confid 3\n')
time.sleep(5)
tn.write('config conference cancel confid 2\n')
time.sleep(5)
tn.write('config conference cancel confid 1\n')
time.sleep(5)
tn.write('config conference cancel confid 0\n')
time.sleep(5)
tn.write('\n')
tn.read_until('[%eSpace U1960(config)]#')
tn.write('config conference register regnum 9 attendeepwd 111111 chairmanpwd 111111 starttime 00:05:01 endtime 23:59:59\n')
time.sleep(5)
tn.write('\n')
tn.write('config conference addattendee confid 0 attendeedn 690\n')
time.sleep(5)
tn.write('config conference register regnum 9 attendeepwd 111111 chairmanpwd 111111 starttime 00:05:01 endtime 23:59:59\n')
time.sleep(5)
tn.write('\n')
tn.write('config conference addattendee confid 1 attendeedn 691\n')
time.sleep(5)
tn.write('config conference register regnum 9 attendeepwd 111111 chairmanpwd 111111 starttime 00:05:01 endtime 23:59:59\n')
tn.write('\n')
time.sleep(5)
tn.write('config conference addattendee confid 2 attendeedn 692\n')
time.sleep(5)
tn.write('config conference register regnum 9 attendeepwd 111111 chairmanpwd 111111 starttime 00:05:01 endtime 23:59:59\n')
time.sleep(5)
tn.write('\n')
tn.write('config conference addattendee confid 3 attendeedn 693\n')
time.sleep(5)
tn.write('config conference register regnum 3 attendeepwd 111111 chairmanpwd 111111 starttime 00:05:01 endtime 23:59:59\n')
time.sleep(5)
tn.write('\n')
tn.write('config conference register regnum 3 attendeepwd 111111 chairmanpwd 111111 starttime 00:05:01 endtime 23:59:59\n')
time.sleep(5)
tn.write('\n')
tn.write('config conference register regnum 9 attendeepwd 111111 chairmanpwd 111111 starttime 00:05:01 endtime 23:59:59\n')
time.sleep(5)
tn.write('\n')
tn.write('config conference addattendee confid 6 attendeedn 694\n')
time.sleep(5)
tn.write('\n')
tn.write('config conference register regnum 9 attendeepwd 111111 chairmanpwd 111111 starttime 00:05:01 endtime 23:59:59\n')
time.sleep(5)
tn.write('\n')
tn.write('config conference addattendee confid 7 attendeedn 695\n')
time.sleep(5)
tn.write('\n')
tn.write('\n')
tn.write('\n')
tn.write('\n')
tn.write('\n')
tn.write('\n')
tn.write('\n')
tn.write('\n')
tn.write('\n')
tn.write('\n')
tn.write('\n')
tn.write('\n')
tn.write('\n')
tn.read_until('[%eSpace U1960(config)]#')
tn.close()
复制代码
作者:
rikimaru_a
时间:
2015-11-04 16:28
感谢! 不过有几个问题,log时间我是不需要的,有输出就行.由于命令本身已经已经根据正则表达式过滤,只要有输出就可以.命令基本就是 "show route xx.xx.xx.xx/xx" 这种的,但是只能一次写入一条.现在把所有命令编辑到一个文本中,如何才能逐条执行,并合并返回结果呢? 像之前说的基本大部分返回结果应该都是空白
回复
2#
jixuuse
作者:
jixuuse
时间:
2015-11-04 16:37
你可以把命令做个成文本,然后for循环读取执行,循环完了就执行完了呗
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2