温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python中SSH远程登录设备怎么实现

发布时间:2022-04-29 13:45:20 来源:亿速云 阅读:314 作者:iii 栏目:开发技术

这篇文章主要介绍了python中SSH远程登录设备怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中SSH远程登录设备怎么实现文章都会有所收获,下面我们一起来看看吧。

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远程登录设备怎么实现”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI