前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python telnet 登录

python telnet 登录

作者头像
py3study
发布2020-01-07 16:30:22
1.9K0
发布2020-01-07 16:30:22
举报
文章被收录于专栏:python3python3

有段时间想利用python自动批量登录设备,并输入命令。

但是读取设备列表文件遍历后发现telnetlib库的登录不上设备。其显示错误为

socket.gaierror: [Errno 4] non-recoverable name resolution failure

明显是DNS解析IP地址错误。

把设备名列表文件全部改成IP地址的话能正常登录。

如果把登录用的host参数手工输入的话可以正常登录设备。

经len函数对比读取的文件和手工输入的设备名的字段后发现其长度差1个字符。说明用for读取设备列表后每个设备名后多了个换行符。我只需要每次从设备名列表读取设备名后删掉最后一个字符,也就是换行符就可以正常登录了。

#!/usr/bin/env python
import subprocess
import telnetlib
import time
import getpass
f = open("list.txt")
line = f.readlines()
username = raw_input("Username:")
password = getpass.getpass("Password: ")
def telnet(username,password,Host):
    tn = telnetlib.Telnet(Host,port =23,timeout =10)
#    tn.set_debuglevel(2)
    tn.read_until('Username:')
    tn.write(username + '\n')
    tn.read_until('Password:')
    tn.write(password + '\n')
    print tn.read_until('>')
    tn.write('screen-length 0 temporary'+ "\n")
    print tn.read_until('>')
    tn.write('display aaa route all'+'\n')
    print tn.read_until('>')
    tn.close()
for Host in line:
    Host = Host[0:len(Host)-1]      #此处说明读取设备列表后只提取到倒数第一个字符,也就是删除换行符
    telnet(username,password,Host)
f.close()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档