[python]使用gevent+telnet实现并行登录路由器

python内置了telnetlib模块,这点比perl强不少。

更好的是,利用gevent的猴子补丁,可以很容易地实现基于协程的并行登录。

 

#!/bin/env python
#encoding=utf-8  
import gevent
from gevent import monkey
monkey.patch_all()
 
#创建函数  
def do_telnet(Host, username, password, finish, commands):  
    import telnetlib  
    '''''Telnet远程登录:Windows客户端连接Linux服务器'''  
   
    # 连接Telnet服务器  
    try:
        tn = telnetlib.Telnet(Host, port=23, timeout=10)  
    except:
        print "%s login fail" % (Host)
        return
    #tn.set_debuglevel(2)  
       
    # 输入登录用户名  
    tn.read_until('sername: ')  
    tn.write(username + '\n')  
      
    # 输入登录密码  
    tn.read_until('assword: ')  
    tn.write(password + '\n')  
        
    # 登录完毕后执行命令  
    ret=tn.read_until(finish)  
    print "%s login ok %s" % (Host,ret)
    for command in commands:  
        tn.write('%s\n' % command)  
      
    #执行完毕后,终止Telnet连接(或输入exit退出)  
    ret=tn.read_until(finish,5)
    print ret
    tn.close() # tn.write('exit\n')  


if __name__=='__main__':       
    # 配置选项  
    Host=['192.168.6.87','192.168.6.26','192.168.6.87'] # Telnet服务器IP  
    username = 'aaa'   # 登录用户名  
    password = 'aaa'  # 登录密码  
    prompt = '#'      # 命令提示符  
    commands = [['ping 192.168.6.26'],['ping 192.168.6.45'],['ping 192.168.6.150']]            
    
    #do_telnet(Host[0], username, password, prompt, commands[0])  
    
    #创建协程      
    nodes = []    
    for i in xrange(0,3):    
         nodes.append(gevent.spawn(do_telnet, Host[i], username, password, prompt, commands[i]))    
    #开始运行    
    gevent.joinall(nodes)
 

很多比较老的设备,路由器交换机仍然只支持telnet,用这种方式可以方便地登录。

 

不过很多比较新的设备和主机,都只支持ssh登录了,又如何处理呢?

 很遗憾啊,paramiko+gevent monkey是不行的。

 这个咱们以后再说。
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值