使用Python脚本实现SSH登录设备

正文共:1111 字 9 图,预估阅读时间:6 分钟

如果没有自动化的管理工具,我们管理设备还要一台一台的去查看;有了自动化之后,理论上这个问题能得到极大改善。

前面我们介绍了Python的安装**(如何使用Python提取Excel中固定单元格的内容,以及如何通过Python读取EXCEL的数据使用Python批量处理Excel的内容)**,那能不能使用Python来实现设备的自动化管理呢?我们今天来试试。

经过了解,Python的Paramiko库是一个功能丰富的SSH工具包,能够实现多种与SSH相关的功能,例如建立SSHv2协议的安全连接,通过exec_command()方法执行远程服务器上的命令、并捕获其标准输出和标准错误输出;还可以实现安全文件传输协议(Secure File Transfer Protocol,SFTP),模拟简单的交互式会话操作,支持隧道和端口转发等等。可以用于自动化运维任务、远程脚本执行、数据同步等各种涉及SSH协议的场景。

还是跟之前一样,我们先创建一个记事本文件;然后,将文件名后缀改为了.py,并双击运行此文件已进入到PyCharm工具。

接下来,在打开的PyCharm工具中,我们选择顶部菜单栏中**“File”下的“Settings”,在设置对话框中,选择“Project”下的“Project Interpreter”**。

在项目解释器列表中,我们没有看到Paramiko。然后我们单击上方的**“+”按钮来添加新的Python包,在弹出的对话框中,搜索“Paramiko”,单击“Install Package”**按钮,等待安装完成。

或者在命令行通过以下命令进行安装。

pip install paramiko

安装完成后,需要在Python脚本中加载Paramiko库。

import paramiko

首先,我们创建一个SSH客户端对象的实例ssh,调用paramiko库中的SSHClient类的构造函数,SSHClient类封装了与远程SSH服务器进行交互所需的方法和逻辑,如连接远程服务器connect()和执行命令exec_command()等与SSH有关的操作。

ssh = paramiko.SSHClient()

在SSH登录设备时,我们经常看到添加主机key的提示,一般需要手工确认。

在Python中,我们可以使用paramiko.AutoAddPolicy自动添加主机key至本地缓存,当连接到一个新主机并且其公钥不在本地缓存中时,客户端将会自动接受并添加这个新公钥到缓存中,然后继续建立连接,而不中断连接过程或抛出异常。

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

然后就可以配置使用connect()连接到远程主机了,配置IP地址、端口、用户名和密码等信息。

ssh.connect(hostname='192.168.1.42', port=22, username='root', password='qwe123!@#')

接下来,就可以通过exec_command()执行命令获取输出了。比如我们在命令行查看接口的IP地址。

把这个命令放到脚本当中,stdin是标准输入对象,通常用于向命令提供输入;stdout是标准输出对象,表示命令执行后的正常输出结果;stderr是标准错误输出对象,表示命令执行过程中产生的错误信息或其他非正常输出。

stdin, stdout, stderr = ssh.exec_command('ip addr show ens192')

使用stdout.read()读取标准输出缓冲区的所有内容,返回的是原始字节形式的数据,因为网络传输和操作系统间可能存在编码差异,所以通常是字节流形式。然后使用.decode()将读取到的字节流解码为字符串,以便在Python中进一步处理和显示。如果不指定编码,默认使用UTF-8编码解码。

output = stdout.read().decode()

最后使用print()输出接口就可以了。

print(output)

最后,使用close()关闭连接,以减少系统资源占用,减低安全风险。

ssh.close()

将各部分代码汇总如下:

Debug没有报错,执行一下。

显示结果与系统查看一致。

如果要执行多条命令,只要在下面添加命令和输出即可。

然后我们试试执行配置命令是否生效。

# 加载Paramiko库import paramiko# 创建SSH客户端对象ssh = paramiko.SSHClient()# 自动添加主机key至本地缓存ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 配置登录信息ssh.connect(hostname='192.168.1.42', port=22, username='root', password='qwe123!@#')# 执行命令stdin, stdout, stderr = ssh.exec_command('systemctl status firewalld')output=stdout.read().decode()print("防火墙当前状态为:\n",output)# 执行命令stdin, stdout, stderr = ssh.exec_command('systemctl stop firewalld')print("关闭防火墙……")# 执行命令stdin,stdout,stderr=ssh.exec_command('systemctlstatusfirewalld')output=stdout.read().decode()print("防火墙当前状态为:\n",output)# 关闭连接ssh.close()

可以生效,关闭防火墙命令执行成功。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

长按二维码
关注我们吧

Juniper虚拟防火墙vSRX部署初体验

将Juniper虚拟防火墙vSRX部署在ESXi进行简单测试

软考网络规划师复习第六章:基础网络实验

网络之路26:STP生成树协议

网络之路27:IRF设备堆叠

网络之路28:二层链路聚合

Windows Server 2019配置多用户远程桌面登录服务器

Windows Server调整策略实现999999个远程用户用时登录

Windows Server 2019创建并配置AD域控制器

IPv6从入门到精通

SRv6典型配置

付出总有回报,全国SRv6组网实验成功了!

如何在最新版的HCL 5.10.0中导入NFV镜像?

手撸一个自动搭建openVPN服务器的SHELL脚本

Windows部署TensorFlow后识别GPU失败,原因是啥?

CentOS 7配置Bonding网卡绑定

轻轻松松达到1.8 Gbps,果然HCL还是搭配高档电脑更好使

以上就是“使用Python脚本实现SSH登录设备”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值