python ssh登录设备_用Python怎么SSH到网络设备
[ TOC ]
0. 前言
自上一篇文章《用python怎么telnet到网络设备》,简单使用了telnetlib库给大家演示了下,但是,现实环境中仍不建议去使用telnet。
SSH(Secure Shell)协议也是属于TCP/IP协议族里的一种,端口号22,可以代替telnet来远程管理的一种方法。
SSH提供了双向认证、数据加密等方法保证数据的安全性,推荐使用SSHv2版本
1. 测试环境及关键代码解释
1.1 简单测试环境
使用python3环境
使用第三方Netmiko模块(基于Paramiko库进行改版)
简单的实验环境
1.2 关键代码
import xx:导入模块
class xx:定义类
def xx: 定义函数
try-except :处理可能引发的异常
ssh.enable():进入enable模式
ssh.find_prompt():返回当前提示符
ssh.send_command():发送查询命令并返回结果
ssh.send_config_set():发送配置命令到目标设备
ssh.disconnect():关闭连接
Tips: import ConnectHandler和import Netmiko是一样的效果的哈。
2. 完整代码
'''
欢迎关注微信公众号:'diandijishu'
此平台是网路工程师个人日常技术、项目案例经验分享,
为巩固及提升技术能力乃至共享所学所知技术,
也欢迎各位工程师一起分享、一起成长。
'''
#!/usr/bin/env python
#coding:utf-8
from netmiko import ConnectHandler
from netmiko.ssh_exception import NetMikoTimeoutException
from netmiko.ssh_exception import NetMikoAuthenticationException
from datetime import datetime
import time
import logging
from my_devices import device_list as devices
'定义类'
class SSH_Client():
'定义login_host函数,用于登陆设备'
def login_host(self , a_device):
try:
self.ssh = ConnectHandler(**a_device)
self.ssh.enable()
reply = self.ssh.find_prompt()
print('>' * 10 + '成功登陆结果如下:' + '>' * 10 + '\n' + reply)
return True
except ValueError:
logging.warning(a_device['host'] + ' Secret 密码错误')
except NetMikoTimeoutException:
logging.warning(a_device['host'] + ' 连接不上设备,请检查网络是否正常通信')
except NetMikoAuthenticationException:
logging.warning(a_device['host'] + ' 登陆失败,用户名或密码错误')
'定义do_cmd函数,用于执行命令'
def do_cmd(self,cmds):
'读取文件,for语句循环执行命令'
with open(cmds) as cmd_obj:
for cmd in cmd_obj:
reply = self.ssh.send_command(cmd)
time.sleep(2)
logging.warning('>' * 10 + cmd.rstrip() + ' 命令执行结果如下:' + '>' * 10 + '\n' + reply)
'定义logout_host函数,关闭程序'
def logout_host(self):
self.ssh.disconnect()
if __name__ == '__main__':
cmds = 'cmd.txt' # 存放执行命令文件,相对路径
ssh_client = SSH_Client()
start_time = datetime.now()
for a_device in devices:
'如果登录结果为True,则执行命令,然后退出'
if ssh_client.login_host(a_device):
ssh_client.do_cmd(cmds)
ssh_client.logout_host()
time.sleep(2)
stop_time = datetime.now()
print('总花费时长:{0}\n'.format(stop_time - start_time))
3. 运行效果
4. 报错效果
4.1 远程连接不上
4.2 用户名和密码错误
5. 碎碎语
结合两篇文章,想必大家都知道如何用python使用自带库或第三方库去telnet或ssh网络设备,然而大家可能就会问,如果设备包含多厂商、网络设备telnet和ssh混杂、众多网络设备,那代码又如何去优化呢?的确,要解决一系列问题,咱们得一个一个来哈,也顺便给入门的小伙伴慢慢熟悉下,后面的文章我给大家讲解如何使用多进程和多线程进行优化、完整版网络巡检。
本人代码功夫不深,如有缺陷望指教,多谢。
如果喜欢的我的文章,欢迎关注我的公众号:点滴技术,扫码关注,不定期分享
如果喜欢的我的文章,欢迎关注我的公众号:点滴技术,扫码关注,不定期分享
python ssh登录设备_用Python怎么SSH到网络设备相关推荐
- python编写登录接口_使用python编写一个登录接口
需求: 编写登录接口 输入用户名密码 认证成功后 显示欢迎信息 输入三次后锁定 用户信息文件 黑名单的文件 黑名单里检查,不让登录 用户名密码判定 流程图: 代码:#!/usr/bin/env pyt ...
- python获取登录按钮_用Python实现一个最新QQ办公版(TIM)的登录界面
最近,QQ的办公版本--TIM进行了一次更新升级.本次更新升级大幅修改了界面的样式,看起来更加的清爽.简洁和高效了. 这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰 ...
- python调用usb设备_用Python与USB设备通信
假设您使用Linux和libusb-1.0作为PyUSB的后端库.// Detach a kernel driver from an interface. // If successful, you ...
- python 自动登录网站_用Python实现自动点击和登录网站帐户
用Python实现起来,很简单,二十行代码以内就可以实现. 比方说,我想自动打开京东会员的网站,输入用户名和密码,点登录,然后点签到. 代码可以这么写: JDSignup.py import time ...
- python调用扫描仪设备_在Python中使用串行端口从扫描仪读取输入
这个问题似乎措辞不当.您可以使用Python的raw_input函数从标准输入中读取数据以提问,如果您知道设备通信的波特率,您可以从串行端口读取字节(否则您将收到垃圾邮件).从这个示例中,我不确定您到 ...
- python模拟登录网站_用python实现模拟登录人人网
我决定从头说起.懂的人可以快速略过前面理论看最后几张图. web基础知识 从OSI参考模型(从低到高:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层)来说,我们的互联网属于应用层.从TCP ...
- python urlretrieve登录下载_使用python urlretrieve下载文件
urlretrieve()方法直接将远程数据下载到本地.urlretrieve()是python urllib下的一个函数,python3已经将urlretrieve()移到urllib.reques ...
- python用户登录程序_「Python」每日一练:函数的应用之注册登录程序
编程题 函数的应用之注册登录程序 任务内容:要求模拟系统注册及登录的情境,注册密码要求:密码是6位或以上,必须包涵大写字母.小写字母.数字.程序若未退出前,则一直循环运行. 程序编写要求:按要求完善各 ...
- python调用usb设备_在Python中查询连接的USB设备信息的简单方法?
我能想到像这样的快速代码. 由于所有USB端口都可以通过/ dev / bus / usb / / 对于生成的ID,即使您拔下设备并重新连接它[可能是其他端口].它会是一样的. import re i ...
最新文章
- 作为一枚第二天上班的小小.net程序员(技术宅的那种)很迷茫哦,第一个随笔
- 我的第一个Scrapy 程序 - 爬取当当网信息
- 文巾解题 181. 超过经理收入的员工
- php 接收curl json数据格式,curl发送 JSON格式POST数据的接收,以及在yii2框架中的实现原理【精细剖析】...
- 二十三、Python队列实现多线程(下篇)
- Duplicate Elimination in Scrapy(转)
- CRM的使用是讲究技巧的
- 如果你也会C#,那不妨了解下F#(6):面向对象编程之“类”
- Typora中使用Gitee图床
- Matlab imcrop函数功能小结(20190123)
- JSP中退出登录销毁Session
- 齿轮标准模数c语言编程,标准齿轮模数齿数计算公式汇总.pdf
- 低密度奇偶校验码(LDPC)GMSK调制解调器 毕业设计
- MySQL创建S,P,J,SPJ表,以及SQL语句
- UE4 InputMode无法锁定编辑器视口鼠标解决方案
- input range: vue自定义进度条
- HI618E音频解码芯片
- 【重磅推荐】哥大开源“FinRL”: 一个用于量化金融自动交易的深度强化学习库
- python二级题库 第四套
- Android 集成百度身份证识别
热门文章
- HTML5 服务器推送事件(Server-sent Events)实战开发
- 在建工程的管理是怎样在总帐中实现
- ABAP--SAP是如何回写CL_GUI_ALV_GRID_BASE的MT_MODIFIED_CELLS的
- BAPI_ACC_GL_POSTING_POST生成财务预制凭证
- SAP SD 定价过程的16个字段的作用说明
- 腾讯阿里字节扎堆做公益,互联网技术也要“内卷”?
- 无性别服饰是趋势,但不该只停留在“中性”
- 波司登的高端之路,难走!
- 宁波python学习_python学习第十五天
- 配置oracle驱动_Myeclipse中添加Oracle