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

 更新时间:2022年04月29日 09:20:24   作者:renkie人可毅  
本文主要介绍了python中SSH远程登录设备,python中支持SSH协议的模块主要有Paramiko和netmiko两种,本文主要介绍了netmiko模块,具有一定的参考价值,感兴趣的可以了解一下

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

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

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

实验拓扑

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

实验目的:

通过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()

实验结果

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

代码优化

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

 完整脚本

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远程登录设备内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析pytorch中对nn.BatchNorm2d()函数的理解

    浅析pytorch中对nn.BatchNorm2d()函数的理解

    Batch Normalization强行将数据拉回到均值为0,方差为1的正太分布上,一方面使得数据分布一致,另一方面避免梯度消失,这篇文章主要介绍了pytorch中对nn.BatchNorm2d()函数的理解,需要的朋友可以参考下
    2023-11-11
  • 程序员的七夕用30行代码让Python化身表白神器

    程序员的七夕用30行代码让Python化身表白神器

    转眼又到了咱们中国传统的情人节七夕了,今天笔者就带大家来领略一下用Python表白的方式,感兴趣的朋友跟随小编一起看看吧
    2019-08-08
  • python得到一个excel的全部sheet标签值方法

    python得到一个excel的全部sheet标签值方法

    今天小编就为大家分享一篇python得到一个excel的全部sheet标签值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • EM算法的python实现的方法步骤

    EM算法的python实现的方法步骤

    本篇文章主要介绍了EM算法的python实现的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Jupyter notebook 不自动弹出网页的解决方案

    Jupyter notebook 不自动弹出网页的解决方案

    这篇文章主要介绍了Jupyter notebook 不自动弹出网页的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python中的二分查找Bisect库使用实战

    Python中的二分查找Bisect库使用实战

    在算法和数据结构中,二分查找是一种高效的搜索算法,可用于有序数据集合的查找,Python的bisect库为我们提供了便捷的二分查找实现,本文将深入探讨Bisect库的使用方法、性能优势,并通过丰富的示例代码展示其在实际应用中的灵活性和效果
    2024-01-01
  • 解决python3爬虫无法显示中文的问题

    解决python3爬虫无法显示中文的问题

    下面小编就为大家分享一篇解决python3爬虫无法显示中文的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 浅谈keras中的batch_dot,dot方法和TensorFlow的matmul

    浅谈keras中的batch_dot,dot方法和TensorFlow的matmul

    这篇文章主要介绍了浅谈keras中的batch_dot,dot方法和TensorFlow的matmul,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python中的print()输出

    python中的print()输出

    print() 方法用于打印输出,最常见的一个函数。这篇文章主要介绍了python的print()输出 ,需要的朋友可以参考下
    2019-04-04
  • 基于Python的ModbusTCP客户端实现详解

    基于Python的ModbusTCP客户端实现详解

    这篇文章主要介绍了基于Python的ModbusTCP客户端实现详解,Modbus Poll和Modbus Slave是两款非常流行的Modbus设备仿真软件,支持Modbus RTU/ASCII和Modbus TCP/IP协议 ,经常用于测试和调试Modbus设备,观察Modbus通信过程中的各种报文,需要的朋友可以参考下
    2019-07-07

最新评论