一个非常实用的Python SSH库

前言

Python的Paramiko库,它是一个用于实现SSHv2协议的客户端和服务器的库。通过使用Paramiko,我们可以在Python程序中轻松地实现远程服务器的管理、文件传输等功能。特别做智能硬件产品的同学要熟悉它,因为它能为你减少很多麻烦,在我以前的工作中,对智能硬件做各种测试就是通过Paramiko连接设备下发各种命令

一.安装

pip install paramiko

二.基本用法

    1.创建一个ssh连接客户端

import paramiko
ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

2.添加服务器的SSH密钥(可选)

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

2.connect()创建连接,连接远程服务,各种智能硬件,服务器等

hostname = '192.168.31.230'port = 22username = 'kali'password = 'kali'ssh.connect(hostname, port, username, password)

3.执行远程命令​​​​​​​

stdin, stdout, stderr = ssh.exec_command('ls')print(stdout.read().decode()) # 打印输出结果print(stderrh.read().decode())# 输出错误信息# 返回结果 DesktopDocumentsDownloadsMusicPicturesPublicTemplatesVideos

4.文件下载​​​​​​​

local_file = 'D:/code/ssh/local_file.txt'  # 本地文件路径和名称remote_file = '/home/kali/remote_file.txt'  # 远程文件路径和名称sftp = ssh.open_sftp()  # 打开SFTP会话sftp.get(remote_file, local_file)  # 从远程服务器下载文件到本地sftp.close()  # 关闭SFTP会话

5.文件上传

local_file = 'D:/code/ssh/local_file2.txt'  # 本地文件路径和名称remote_file = '/home/kali/remote_file2.txt'  # 远程文件路径和名称sftp = ssh.open_sftp()  # 打开SFTP会话sftp.put(local_file, remote_file)  # 上传本地文件到远程服务器sftp.close()  # 关闭SFTP会话

 

6.关闭连接

ssh.close() #关闭连接

三.完整代码如下​​​​​​​

import paramikossh = paramiko.SSHClient() # 创建客服端ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 添加秘钥hostname = '192.168.31.230'port = 22username = 'kali'password = 'kali'ssh.connect(hostname, port, username, password) # 创建连接stdin, stdout, stderr = ssh.exec_command('ls') # 执行lsprint(stdout.read().decode())# 下载local_file = 'D:/code/ssh/local_file.txt'  # 本地文件路径和名称remote_file = '/home/kali/remote_file.txt'  # 远程文件路径和名称sftp = ssh.open_sftp()  # 打开SFTP会话sftp.get(remote_file, local_file)  # 从远程服务器下载文件到本地# 上传local_file2 = 'D:/code/ssh/local_file2.txt'  # 本地文件路径和名称remote_file2 = '/home/kali/remote_file2.txt'  # 远程文件路径和名称sftp = ssh.open_sftp()  # 打开SFTP会话sftp.put(local_file2, remote_file2)  # 上传本地文件到远程服务器sftp.close()  # 关闭SFTP会话ssh.close() # 关闭连接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在腾讯,我的试用期总结!

在腾讯的 3 个月,我经历了些什么?大家好,我是鱼皮。最近不少小伙伴顺利毕业,入职了新公司,开始了人生第一段正式工作经历。但对于很多公司,如果你想要成为正式员工,是需要先经历几个月的试用期的…

这6个动作,据说只有20%的人能做到!| 今日最佳

全世界只有3.14 %的人关注了青少年数学之旅你的手指够灵活吗?能做出下面这些动作在回答吧。据说就是下面这6个动作,据说只有20%的人能做到哦!大家不妨试试,看看你是不是这20%中的一员。PS:反正笔者已经十指已打结了...…

打造个性化的Internet Explorer

作者:孙辉 在Microsoft的软件哲学中,框架窗口是一个十分重要的角色,这类窗口简直无处不在。所谓框架窗口,就是四个窗口边上具有停靠对象能力的窗口对象,从现象上看,框架窗口有十分特别的“边”,…

java wrapper linux_Java Service Wrapper linux 服务 java 自启动

测试通过:以java应用程序为例,打包为tianlong.jar,程序入口为tianlong.QueueTest。在tianlong目录下:mkdir bin conf lib 创建3个目录在linux的/opt下建立tianlong目录,复制tianlong.jar到/opt/tianlong/lib目录下。1、下载Java S…

Serializable和Parcelable

Serializable&#xff08;接口&#xff09;通过intent 的bundle传递参数Bundle bundle new Bundle(); bundle.putSerializable(IntentKeys.IMG_ARR_ENVIR_IMG, mArrListEnvir_img); intent.putExtras(bundle);mListEnvir (ArrayList<EnvirImg>) (bundle .ge…

如何为 .NET Core 3.0 中 WPF 配置依赖注入 ?

咨询区 user842818&#xff1a;我非常熟悉 ASP.NET Core 和它开箱即用的依赖注入支持&#xff0c;当 Controller 需要依赖注入时&#xff0c;可以在 构造函数 中以参数的形式来实现&#xff0c;这个IOC的理念相当好&#xff0c;我想把它带到 WPF 中&#xff0c;当我同样以构造函…

百度家电行业报告摘录

上图反映了关注家电信息的网民在百度频道的活跃情况。很明显&#xff0c;百度贴吧、百度图片和百度知道是网民最活跃的频道&#xff0c;特别是百度贴吧&#xff0c;有超过四分之一的检索量都来自于百度贴吧。百度有不少以家电品牌或产品为主题的贴吧&#xff0c;比如海尔吧、TC…

如何识别能把桥压塌的大车?快看!能救命!

全世界只有3.14 % 的人关注了青少年数学之旅2019年10月10日晚6:10左右&#xff0c;江苏无锡市北环路附近一高架桥出现桥面侧翻&#xff0c;经现场初步勘测&#xff0c;桥下被压小车3辆&#xff08;其中一辆系停放车辆&#xff0c;无人&#xff09;。经搜救确认&#xff0c;事故…

如何用outlook express 收发邮件

一&#xff0e;创建用户1.打开Outlook express软件&#xff0c;单击“工具”选项&#xff0c;选择“帐户”选项。2.单击“添加”按钮&#xff0c;选择“邮件”选项。3.在“连接向导”中&#xff0c;输入发件人姓名&#xff0c;在对方收到邮件后&#xff0c;发件人姓名将会显示在…

java虚拟机 山寨机_十年前的山寨机居然有系统?没错,还是纯国产的

文丨太平洋数码苍茫的天涯是我的爱&#xff0c;绵绵的青山脚下花正开&#xff0c;什么样的节奏是最呀最摇摆……你是我天边最美的云彩&#xff0c;让我用心把你留下来(留下来)……不知道大家是否还记得这段熟悉的旋律&#xff0c;总之小编我今天再次回听这首歌的时候身体依然会…

高人写的浙大简史(转)

1997年&#xff0c;浙大100岁&#xff0c;虽人到中年&#xff0c;且老伴在1952年便已与之离婚&#xff0c;但大儿子玉泉已长大成人&#xff0c;在工厂从事技术工作&#xff0c;表现优秀&#xff1b;二儿子之江右腿瘫痪行动不便&#xff0c;几乎无劳动能力&#xff0c;靠其大哥供…

dotnet中的counters说明(一)

在dotnet中&#xff0c;常用的收集指标有&#xff1a;System.Runtime 计数器Microsoft.AspNetCore.Hosting计数器Microsoft.AspNetCore.Http.Connections计数器Microsoft-AspNetCore-Server-Kestrel计数器System.Net.Http计数器(>.NET5可用)System.Net.NameResolution计数器…

当才华还撑不起梦想时,你应该静下心来看这些

全世界只有3.14 % 的人关注了青少年数学之旅在工作之余&#xff0c;我们大量的碎片时间被手机占据。无意识的刷手机打发无聊&#xff0c;不如有趣又高品质的积累。我们特意精选了在不同领域的几个高品质公众号代表&#xff0c;希望让你在快乐打发闲暇时光的同时&#xff0c;也能…

统一威胁管理

回顾2004年以及已经走过一半的2005年&#xff0c;国内信息安全市场的发展有一些明显的轨迹可循。首先是技术创新开始受到市场的热烈回应&#xff0c;这说明国内的信息安全用户已经对产品价值进行正确的认知。另一个趋势是用户的安全需求在从安全产品向整体解决方案转移。广大用…

如何使用Git

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 廖雪峰的博客。 从零起步的Git教程&#xff0c;让你无痛苦上手世界上最流行的分布式版本控制系统Git&#xff01; 既然号称史上最浅显易懂的Git教程&#xff0c;那这个教程有什么让你怦然…

java中static x 5_java中static作用详解

static表示“全局”或者“静态”的意思&#xff0c;用来修饰成员变量和成员方法&#xff0c;也可以形成静态static代码块&#xff0c;但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说&#xff0c;它不依赖类特定的实例&…

.net core ——微服务内通信Thrift和Http客户端响应比较

1、Benchmark介绍wiki中有定义&#xff1a;基准测试是运行计算机程序&#xff0c;一组程序或其他操作的行为&#xff0c;以便评估对象的相对性能&#xff0c;通常是通过对其运行许多标准测试和试验。目前许多成熟的github开源项目&#xff0c;均采用Benchmark测试结果作为性能依…

今日最佳:你爸爸给你取名的时候。。。

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;视频源于枫潇潇兮&#xff09;

Discuz添加自定义模板广告

在做Discuz中广告的时候碰到个大问题&#xff0c;现在我需要做一个轮播的通屏广告位&#xff0c;调用广告图片的代码应该是以下代码&#xff1a;<ul> <li style"background:url(图片地址) no-repeat center top;"><a href"#"></a…

kafka偏移量保存到mysql里_Kafka 新版消费者 API(二):提交偏移量

1. 自动提交最简单的提交方式是让消费者自动提交偏移量。如果 enable.auto.commit 被设为 true&#xff0c;那么每过 5s&#xff0c;消费者会自动把从 poll() 方法接收到的最大偏移量提交上去。提交时间间隔由 auto.commit.interval.ms 控制&#xff0c;默认值是5s。消费者每次…