- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
使⽤Python登录⽹关设备执⾏命令
⼀、概述
最近发现办公室有⼀个感测器⽹关,偶尔会掉线,重启之后,就正常了。
⼿动操作过程如下:
# telnet 10.212.82.90
Trying 10.212.82.90...
Connected to 10.212.82.90.
Escape character is '^]'.
(none) login: root
Password:
Please make sure that what you're doing! If you aren't administrator, please Don't do anything! :)
# ps
PID USER VSZ STAT COMMAND
1 root 1124 S init
2 root 0 SW [kthreadd]
3 root 0 SW [ksoftirqd/0]
4 root 3888 S /usr/app/bin/app
说明:先telnet进去,输⼊⽤户名和密码之后,执⾏ps命令。如果有/usr/app/bin/app进程,说明设备正常,否则就需要重启。
但是⼿动操作⽐较⿇烦,需要使⽤python登录⽹关设备,检测是否正常。
⼆、Telnet 对象
Telnet.read_until(expected, timeout=None) : #读取连接服务器后显⽰的内容,直到遇到同expected相同的字节串。或者等待时间⼤
于timeout时直接向下运⾏。
Telnet.read_very_eager() : 读取从上次IO阻断到现在所有的内容,返回的是字节串,需要进⾏decode()编码。如果连接关闭或者没有可
⽤数据时会抛出EOFError,如果没有其他可⽤的数据,返回的是b"",除⾮在IAC中间,否则不会阻碍。
Telnet.open(host, port=23[, timeout]) : 连接到主机,端⼝号为第⼆个可选参数,默认为标准的Telnet端⼝(23),可选的timeout参数
指定连接的超时时间,如果未指定,将使⽤全局默认超时设置。不要尝试去重新打开⼀个已经连接的实例对象。
Telnet.close() : 关闭连接。
Telnet.write(buffer) : # 将⼀个字节串(byte string)写进socket,如果连接被阻塞,这也会被阻塞,如果连接关闭,会抛出OSError。
Telnet.interact() : telnet的交互功能,下⾯⽤了⼀个死循环保证⽤户能够⼀直输⼊命令进⾏某些操作,也可以使⽤Telnet.interact()这个
⽅法来使所连接终端持久化,不过官⽹说 (emulates a very dumb Telnet client)直译是⼀个⾮常愚蠢的客户端。
官⽅⽂档,请参考 :
三、检测脚本
check_gateway.py
#!/usr/bin/env python3
# coding: utf-8
import telnetlib
import time
class TelnetClient(object):
def __init__(self, ip, user, pswd):
self.tn = telnetlib.Telnet()
self.host_ip = ip
self.username = user
self.password = pswd
self.last_res = '' # 记录上次命令执⾏结果
# 此函数实现telnet登录主机
def login_host(self):
try:
# self.tn = telnetlib.Telnet(host_ip,port=23)
self.tn.open(self.host_ip)
except:
text = '{} ⽹络连接失败'.format(self.host_ip)
print(text)
return False
# 等待login出现后输⼊⽤户名,最多等待0.3秒
self.tn.read_until(b'Username: ', timeout=0.3)
self.tn.write(self.username.encode('asci
您可能关注的文档
- Spring官网教程学习1和使用Gradle.pdf
- 二元二次方程组的解法教学设计.pdf
- 八年级生物上学期教学计划及教学进度表.pdf
- 人教版小学二年级下册必背古诗.pdf
- 《服装设计基础》课程标准.pdf
- Spring事务失效的一种原因(this调用).pdf
- verilogHDL数字设计与综合(第二版)第2章课后习题答案.pdf
- 统计学练习题——计算题2115.pdf
- 老友记第十季第九集中英分句对照剧本.pdf
- 电力系统暂态分析(第2次).pdf
- 计量规程规范 JJF 2045-2023机动车发动机转速测量仪校准装置校准规范.pdf
- 《JJF 2045-2023机动车发动机转速测量仪校准装置校准规范》.pdf
- JJF 2046-2023汽车检测设备用标准中性滤光片校准规范.pdf
- 《JJF 2046-2023汽车检测设备用标准中性滤光片校准规范》.pdf
- 计量规程规范 JJF 2046-2023汽车检测设备用标准中性滤光片校准规范.pdf
- JJF 2062-2023光伏组件用紫外老化箱校准规范.pdf
- 计量规程规范 JJF 2062-2023光伏组件用紫外老化箱校准规范.pdf
- 《JJF 2062-2023光伏组件用紫外老化箱校准规范》.pdf
- JJF 2064-2023多结砷化镓太阳电池校准规范 光谱响应度.pdf
- 计量规程规范 JJF 2064-2023多结砷化镓太阳电池校准规范 光谱响应度.pdf
文档评论(0)