热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python教程分享python中SSH远程登录设备的实现方法

python中支持ssh协议的模块主要有paramiko和netmiko两种,本次实验采用netmiko模块。netmikko模块为python的第三方模块,需要使用pip来下载安

python中支持ssh协议的模块主要有paramiko和netmiko两种,本次实验采用netmiko模块。

netmikko模块为python的第三方模块,需要使用pip来下载安装。(联网的情况下)

python中SSH远程登录设备的实现方法

下载完毕后,进入python 3.10解释器,如果import netmiko没有报错,则说明netmiko安装成功。

实验拓扑

将ensp的lsw1与本地虚拟网卡loopback0进行桥接,模拟将自己的电脑桥接到以下拓扑网络中。

python中SSH远程登录设备的实现方法

实验目的:

通过netmiko模块的ssh逐一登录4台交换机lsw2-lsw5,并依次为其配置stp,默认模式为mstp。

实验脚本

完整代码

from  netmiko import connecthandler  for i in range(20,24):      sw={          'device_type':'huawei',          'ip':'10.0.1.'+str(i),          'username':'python',          'password':'123456',          }      cOnnect=connecthandler(**sw)      print('n'+'-----------------'+'成功登录到交换机'+sw['ip']+'-----------------')      config_commands=['stp mode stp','dis stp | include cist global info']      output=connect.send_config_set(config_commands)      print(output)      connect.save_config()

1.从netmiko模块导入它的链接库函数connecthandler(),用于实现ssh登录网络设备。

from  netmiko import connecthandler

2.创建一个字典sw,该字典包含'device_type'、'ip'、'username'、'password'四个必选值。'device_type'用于指定设备类型,这里我们用的是华为的设备,所以'device_type'为'huawei'。

for i in range(20,24):      sw={          'device_type':'huawei',          'ip':'10.0.1.'+str(i),          'username':'python',          'password':'123456',          }

由于我们这里要登陆四台设备,所以要用for循环。

3.调用connecthandler()函数,借用for循环,对字典sw进行ssh连接,将他赋值给变量connect,注意sw2前面的**作为标识。

cOnnect=connecthandler(**sw)

在python的在形参前加'*'和'**'表示动态形参

在形参前加'*'表示可以接受多个实参值存进数组

对于在形参前加'**'表示表示接受参数转化为字典类型

4.如果ssh登录成功,则提示成功登录

  print('n'+'-----------------'+'成功登录到交换机'+sw['ip']+'-----------------')

5.创建一个名为config_commands的列表为参数,其元素为需要在交换机上执行的命令。

config_commands=['stp mode stp','dis stp | include cist global info']

6.然后以刚刚创建的config_commands的列表为参数,调用connecthandler()的send_config_set()函数来使用上述命令对sw做配置,并将配置过程打印出来。

output=connect.send_config_set(config_commands)  print(output)

7.最后用save_config()保存设备配置

 connect.save_config()

实验结果

python中SSH远程登录设备的实现方法

从以上结果可知,netmiko额外替我们输入了:system view和return。 

代码优化

如果有大量的交换机其管理ip地址也没什么规律性,此时直接用for循环管理ip地址来登录设备,就不再那么灵活和使用了。此时我们可以把所有交换机的ip地址都放入都放入一个文件名为ip_list的文件,通过for循环readlines()来读取文件中的每行ip地址,来逐台登录设备。

python中SSH远程登录设备的实现方法

 完整脚本

from  netmiko import connecthandler  with open('ip_list.txt') as f:      for line in f.readlines():          host=line.strip()          sw={              'device_type':'huawei',              'ip':host,             #host是变量,不要粗心加了引号              'username':'python',              'password':'123456',              }          cOnnect=connecthandler(**sw)          print('n'+'-----------------'+'成功登录到交换机'+sw['ip']+'-----------------')          config_commands=['stp mode stp','dis stp | include cist global info']          output=connect.send_config_set(config_commands)          print(output)          connect.save_config()

注意:ip_list要和python脚本在一个文件夹。

结果 

python中SSH远程登录设备的实现方法

 到此这篇关于python中ssh远程登录设备的文章就介绍到这了,更多相关python中ssh远程登录设备内容请搜索<编程笔记>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<编程笔记>!

需要了解更多python教程分享python中SSH远程登录设备的实现方法,都可以关注python教程分享栏目&#8212;编程笔记


推荐阅读
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意 ... [详细]
  • 这是因为protobuf和pillow没有安装,或者是通过apt-get安装的。使用pip重新安装一遍即可解决问题。删除caffe-mast(提前保存Makefile.config和M ... [详细]
  • 这个问题困扰了我两天,卸载Dr.COM客户端(我们学校上网要装这个客户端登陆服务器,以后只能在网页里输入用户名和密码了),问题解决了。问题的现象:在实验室机台式机上安装openfire和sp ... [详细]
  • 一json文件JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使 ... [详细]
author-avatar
上午劳动_951
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有