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

作者:renkie人可毅 时间:2023-10-24 02:30:58 

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远程登录设备的实现方法

来源:https://blog.csdn.net/qq_45959697/article/details/124429321

标签:python,SSH,远程登录设备
0
投稿

猜你喜欢

  • python 爬虫 实现增量去重和定时爬取实例

    2022-01-26 01:01:37
  • Python标准库shutil用法实例详解

    2021-03-25 21:04:25
  • Ubuntu 下 vim 搭建python 环境 配置

    2022-04-27 21:25:17
  • 怎么快速自学python

    2023-06-25 19:19:32
  • 关于golang监听rabbitmq消息队列任务断线自动重连接的问题

    2024-04-25 13:21:03
  • Oracle 查看表空间的大小及使用情况sql语句

    2023-07-14 20:06:31
  • 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器

    2024-01-18 04:28:24
  • Pandas时间序列重采样(resample)方法中closed、label的作用详解

    2023-01-31 17:46:36
  • Python中struct模块对字节流/二进制流的操作教程

    2021-05-10 19:26:56
  • Python中弱引用的神奇用法与原理详解

    2023-01-12 04:27:08
  • 在element-ui的select下拉框加上滚动加载

    2024-04-17 10:04:14
  • 悟道WEB标准:统一思想,遵循标准

    2009-10-11 16:38:00
  • go time.After优化后性能提升34%内存减少67%

    2024-05-05 09:33:34
  • 使用DIV+CSS设计网页的好处

    2007-10-14 15:02:00
  • Python进程间通信用法实例

    2023-02-13 02:53:18
  • Python随机生成身份证号码及校验功能

    2023-03-20 08:30:47
  • Python如何使用队列方式实现多线程爬虫

    2022-03-24 08:56:51
  • Linux下安装mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz

    2024-01-27 20:07:57
  • 浏览器针对单服务器连接数问题

    2008-05-12 22:27:00
  • vue使用canvas绘制圆环

    2024-05-02 17:04:29
  • asp之家 网络编程 m.aspxhome.com