新闻详情

新闻详情

首页 / 资讯中心 / 详情

实现,提供客户端和服务器功能

发布时间:2026/11/14 13:12:57来源:尧图网络
实现,提供客户端和服务器功能
它是SSHv2协议的实现, 提供客户端和服务器功能。它本身是一个纯粹的接口, 这个接口紧密围绕着SSH网络的概念来构建。我们可以使用它, 通过这样的方式来进行ssh操作, 而且这个过程会变得相当的方便。该方案由两个核心组件构成, 具体表现为: 和。它的作用, 实际上就跟咱们平时用的Linux里面的ssh命令差不多, 基本上是一样的意思。你可以把它理解为一种技术上的操作手段, 专门用来对SSH会话进行封装和处理的。该类进行了封装, 封装的内容包含了传输方面的事项、通道方面的事项以及建立方面的事项, 通常情况下, 它被用于执行远程命令。API我们来创建实例, 让那个SSH客户端出现。# 参数解释- hostname连接的目标主机- portSSH_PORT指定端口- usernameNone验证的用户名- passwordNone验证的用户密码- pkeyNone私钥方式用于身份验证- key_filenameNone一个文件名或文件列表指定私钥文件- timeoutNone可选的tcp连接超时时间- allow_agentTrue是否允许连接到ssh代理默认为True 允许- look_for_keysTrue是否在~/.ssh中搜索私钥文件默认为True 允许- compressFalse是否打开压缩可以通过验证方法去连接那个处于远程位置的服务器端来进行操作。# 参数解释- command要执行的命令- bufsize与Python中文件对象的同名函数解释相同缓冲区大小- timeout设置命令的超时相应事件- get_pty从服务器请求一个伪终端默认为假- environment一个当前shell环境的字典远程命令的默认执行环境参数指的是那些需要被执行的那些shell命令, 其操作会去打开一个全新的通道, 并且会在这新开的通道里执行你所请求的那个具体的命令。这个函数最后给出来的那个玩意儿是元组, 它里面有这些东西: 一个是标准输入也就是stdin, 还有标准输出以及出错。一般来说, 对于命令的执行结果, 我们通常是通过执行相关操作来进行获取的。把那个SSH的连接给关了。# 参数解释- term模拟终端类型- width终端长度- height终端宽度- width_pixels终端的像素宽度- height_pixels终端的像素高度- environment命令的shell环境就是在ssh服务器上面把交互式的shell会话给开启。一个全新的通信通道被顺利开辟, 它接着便通过调用相应的接口, 成功与指定的伪终端进行了对接连接。在这个过程中, 系统使用了请求所指定的那个终端类型, 以及对应的大小的参数配置, 最终将此作为返回的价值予以反馈。从一种通俗的角度来进行理解, 其核心含义就是去建立了一个真正存在的 shell 窗口空间, 以此来执行命令方面的交互操作。当需要连接到那些服务器端并不存在已知主机密钥的情况时, 应该去设置用来决定如何进行处理的策略选项内容。常见的使用策略是, 其作用是自动把主机名和新主机密钥加到本地主机密钥对象里面去, 然后进行保存。实例代码这是一个简单的代码,它是通过建立的通道进行命令的传输与返回结果的获取的代码import paramikodef connect(hostname,username,password):client paramiko.SSHClient()# 初始化client.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 设置密钥策略client.connect(hostname,usernameusername,passwordpassword)# 连接主机return clientdef exec_cmd(client,cmd):stdin,stdout,stderr client.exec_command(cmd)return stdout.read().decode(),stderr.read().decode()def main():hostname 192.168.0.104username pipassword 123456cmd ps -auxclient connect(hostname,username,password)res exec_cmd(client, cmd)if res[0]:print(res[0])if res[1]:print([E]:\n,res[1])client.close()if __name__ __main__:main()上面的代码是使用了默认建立好的那个连接对象, 来进行命令的传输工作, 同时也完成了返回结果的获取动作。class SSHChannle:def __init__(self, host, username, password, port22):初始化SSH通道self.sh paramiko.SSHClient()self.sh.set_missing_host_key_policy(paramiko.AutoAddPolicy())self.sh.connect(host, usernameusername, passwordpassword)self.channle self.sh.invoke_shell()def get_ssh_recv(self):接收SSH通道中发来的消息while not self.channle.exit_status_ready():# 如果远程进程已退出并返回退出状态则返回truetime.sleep(0.1)try:buf self.channle.recv(1024).decode(utf-8)print(buf,end)sys.stdout.flush()except Exception as ex:print(ex)def send_ssh_cmd(self):发送命令给SSH通道while not self.channle.exit_status_ready():cmd input()try:self.channle.send(cmd \r)except Exception as ex:print(ex)sys.stdin.flush()def run(self):ssh_recv_thread threading.Thread(targetself.get_ssh_recv)ssh_send_thread threading.Thread(targetself.send_ssh_cmd)ssh_recv_thread.start()ssh_send_thread.start()ssh_recv_thread.join()ssh_send_thread.join()self.sh.close() # 关闭通道其作用类似于Linux系统中的sftp命令, 该工具是对SFTP客户端进行的封装。用来实现远程文件的各项操作, 比如说, 把文件弄上去, 或者是把文件拿下来, 又或者是去改一改这个文件应该有什么样的权限这些事儿。API# 参数解释- t该参数可以通过paramiko.Transport( (ip,port ))创建一个已通过验证的传输通道参数为IP和端口的二元组SFTP客户端的创建, 是根据参数t所指定的已经通过验证的传输通道来实现的。把那个本地的路径所指的文件, 给传到目标主机那儿去。将路径这个远程路径里面的那个文件, 给下载下来放到本地主机那里去。把那个位于远程主机上面的文件给打开, 这一点是和open这个函数非常类似的, 最后会返回一个文件对象。返回给定路径下的文件列表以及目录列表, 如果未提供指定路径的话, 那么默认使用当前工作目录作为路径。修改当前正在使用的SFTP连接会话里面的工作目录。检索当前path所指向的文件信息根据路径, 在目标主机上创建目录, 并且设置的默认权限是511。我们要把给定了路径的这个目录删除掉。删除给定path所指向的文件实例代码以下是一段关于的测试代码, 虽然它相对而言比较简陋。import paramikodef connecnt(hostname,username,password): #创建连接对象client paramiko.Transport( (hostname,22))try:client.connect(usernameusername,passwordpassword)except paramiko.SSHException:return Nonesftp_client paramiko.SFTPClient.from_transport(client)return sftp_clientdef main():hostname 192.168.0.104username pipassword 123456sftp_client connecnt(hostname,username,password)remotefile_path /home/pi/test # 目标主机文件路径localfile_path /home/test # 本地主机文件路径sftp_client.put(localfile_path, remotefile_path) #上传本地test文件到远程sftp_client.get(remotefile_path, localfile_path) #下载远程test文件到本地print(sftp_client.listdir())print(sftp_client.lstat(remotefile_path))with sftp_client.open(remotefile_path) as fp:print(fp.read().decode())#print(sftp_client.remove(remotefile_path))if __name__ __main__:main()
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/14 3:51:47

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/14 3:51:43

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉