脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - python中SSH远程登录设备的实现方法

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

2022-12-12 10:43renkie人可毅 Python

本文主要介绍了python中SSH远程登录设备,python中支持SSH协议的模块主要有Paramiko和netmiko两种,本文主要介绍了netmiko模块,具有一定的参考价值,感兴趣的可以了解一下

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

原文链接:https://blog.csdn.net/qq_45959697/article/details/124429321

延伸 · 阅读

精彩推荐
  • Python对python指数、幂数拟合curve_fit详解

    对python指数、幂数拟合curve_fit详解

    今天小编就为大家分享一篇对python指数、幂数拟合curve_fit详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    yefengzhichen9592021-05-09
  • PythonPython NumPy创建数组方法

    Python NumPy创建数组方法

    这篇文章主要介绍了Python NumPy创建数组方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下...

    飞Link10402022-09-07
  • PythonPython http接口自动化测试框架实现方法示例

    Python http接口自动化测试框架实现方法示例

    这篇文章主要介绍了Python http接口自动化测试框架实现方法,结合实例形式分析了Python针对http接口测试的相关实现与使用操作技巧,需要的朋友可以参考下...

    slq52012162021-04-26
  • Pythonpython skimage 连通性区域检测方法

    python skimage 连通性区域检测方法

    今天小编就为大家分享一篇python skimage 连通性区域检测方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    oneTaken11452021-03-07
  • PythonPython自动化部署工具Fabric的简单上手指南

    Python自动化部署工具Fabric的简单上手指南

    这篇文章主要介绍了Python自动化部署工具Fabric的简单上手指南,涵盖Fabric的安装、fabric的远程操作与维护等方面,需要的朋友可以参考下...

    haort4112020-08-20
  • PythonTensorFlow实现RNN循环神经网络

    TensorFlow实现RNN循环神经网络

    这篇文章主要介绍了TensorFlow实现RNN循环神经网络,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    ChenVast11492021-01-18
  • PythonPyCharm代码回滚,恢复历史版本的解决方法

    PyCharm代码回滚,恢复历史版本的解决方法

    今天小编就为大家分享一篇PyCharm代码回滚,恢复历史版本的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    MrLittleDog13052021-04-10
  • PythonPyQt编程之如何在屏幕中央显示窗体的实例

    PyQt编程之如何在屏幕中央显示窗体的实例

    今天小编就为大家分享一篇PyQt编程之如何在屏幕中央显示窗体的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    chen_you_Nick10772021-07-14