当前位置: 首页 > news >正文

ubuntu如何远程ssh登录Windows环境并执行测试命令

ubuntu如何远程ssh登录Windows环境并执行测试命令

  • 1 paramiko模块简介
    • 1.1 安装paramiko
    • 1.2 paramiko基本用法
      • 1.2.1 创建SSHClient实例
      • 1.2.2 设置主机密钥策略
      • 1.2.3 连接SSH服务器
      • 1.2.4 执行命令
      • 1.2.5 关闭SSH连接
      • 1.2.6 异常处理
  • 2 windows的配置
    • 2.1 启动OpenSSH服务
    • 2.2 配置防火墙
  • 3 Ubuntu配置
    • 3.1 安装ssh客户端
    • 3.2 测试是否可以远程链接到Windows
  • 4 paramiko使用完整测试样例

在实际的开发中有时会遇到需要在ubuntu上远程登录Windows的电脑去执行一些比较特殊的命令。这个时候就需要使用python的paramiko模块,首先去远程登录,然后再去执行对应的cmd。

1 paramiko模块简介

paramiko是一个用于在Python中实现SSH(Secure Shell)协议的模块,它提供了客户端和服务器的功能,使得你能够在网络上安全地执行命令、传输文件等。

1.1 安装paramiko

你可以使用以下命令使用pip安装paramiko:

pip3 install paramiko

1.2 paramiko基本用法

1.2.1 创建SSHClient实例

import paramikossh = paramiko.SSHClient()

1.2.2 设置主机密钥策略

在连接SSH服务器之前,建议设置主机密钥策略,以便验证远程主机的身份:

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

1.2.3 连接SSH服务器

ssh.connect(hostname='your_host', username='your_username', password='your_password')

1.2.4 执行命令

以cmd为echo "Connection test"来介绍

cmd = 'echo "Connection test"'
stdin, stdout, stderr = ssh.exec_command(cmd)

1.2.5 关闭SSH连接

ssh.close()

1.2.6 异常处理

import paramikotry:# Your paramiko code heressh.close()except paramiko.AuthenticationException:print("Authentication failed, please verify your credentials")
except paramiko.SSHException as e:print(f"Unable to establish SSH connection: {e}")
except Exception as e:print(f"An error occurred: {e}")

2 windows的配置

要通过SSH连接到Windows电脑,你需要使用SSH客户端,并确保Windows电脑上已启用了OpenSSH服务。

2.1 启动OpenSSH服务

  • 打开服务管理器。你可以按Win + R打开运行对话框,然后输入services.msc并按Enter。
  • 在服务管理器中找到"OpenSSH SSH Server"服务,确保其状态为“已启动”,并将启动类型设置为“自动”。
    在这里插入图片描述

2.2 配置防火墙

  • 如果Windows防火墙启用,确保允许SSH流量。你可以在“控制面板”中的“系统和安全”下找到“Windows Defender 防火墙”,然后选择“允许应用通过防火墙”。
  • 在列表中找到“OpenSSH服务器”并确保其允许。

3 Ubuntu配置

3.1 安装ssh客户端

sudo apt-get update
sudo apt-get install openssh-client

3.2 测试是否可以远程链接到Windows

ssh username@your-windows-ip

4 paramiko使用完整测试样例

该测试用例首先使用echo "Connection test"的测试命令去测试远程链接是否确实建立。然后再去执行真是的测试命令,进入到Windows D盘的test目录,去获取test目录下的所有文件和目录,然后输出结果。

import paramikossh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())user = 'xxx'
remote_host = 'yyy'
passwd = 'zzz'
cmd = f'powershell.exe cd D:\\test; Get-ChildItem;'try:ssh.connect(remote_host, username = user, password = passwd)print(user, '@', remote_host, ": connected successfully.")print(" =================== 1 ======================")# 执行一个简单的命令(例如:echo)来确认连接确实建立stdin, stdout, stderr = ssh.exec_command('echo "Connection test"')# 获取命令输出(如果有)output = stdout.read().decode('utf-8', errors='ignore').strip()error = stderr.read().decode('utf-8', errors='ignore').strip()print(" =================== 2 ======================")# 根据命令执行结果输出信息if output:print("Connection test succeeded:", output)if error:print("Connection test had errors:", error)print(" =================== 3 ======================")# 执行一个简单的命令(例如:echo)来确认连接确实建立stdin, stdout, stderr = ssh.exec_command(cmd)print(" =================== 3 - 1 ======================")# 获取命令输出(如果有)output = stdout.read().decode('ISO-8859-1', errors='ignore').strip()print(" =================== 3 - 2 ======================")error = stderr.read().decode('utf-8', errors='ignore').strip()print(" =================== 3 - 3 ======================")print(" =================== 4 ======================")# 根据命令执行结果输出信息if output:print("Connection test succeeded:", output)if error:print("Connection test had errors:", error)print(" =================== 5 ======================")# 关闭连接ssh.close()except paramiko.AuthenticationException:print("Authentication failed, please verify your credentials")
except paramiko.SSHException as sshException:print("Unable to establish SSH connection: %s" % sshException)
except paramiko.BadHostKeyException as badHostKeyException:print("Unable to verify server's host key: %s" % badHostKeyException)
except Exception as e:print(e)

相关文章:

ubuntu如何远程ssh登录Windows环境并执行测试命令

ubuntu如何远程ssh登录Windows环境并执行测试命令 1 paramiko模块简介1.1 安装paramiko1.2 paramiko基本用法1.2.1 创建SSHClient实例1.2.2 设置主机密钥策略1.2.3 连接SSH服务器1.2.4 执行命令1.2.5 关闭SSH连接1.2.6 异常处理 2 windows的配置2.1 启动OpenSSH服务2.2 配置防火…...

人工智能应用专栏----专栏介绍

文章目录 本专栏主要记录人工智能的应用方面的内容,包括chatGPT、AI绘图等等; 订阅后可私聊我获取 《从零注册并登录使用ChatGPT》 《从零开始使用chatGPT的API;通过chatgpt-next-web部署自己chatGPT web网页;无需翻墙&#xff0c…...

【lesson11】表的约束(4)

文章目录 表的约束的介绍唯一键约束测试建表插入测试建表插入测试建表插入测试修改表插入测试 表的约束的介绍 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保…...

将单体应用程序迁移到微服务

多年来,我处理过多个单体应用,并将其中一些迁移到了微服务架构。我打算写下我所学到的东西以及我从经验中用到的策略,以实现成功的迁移。在这篇文章中,我将以AWS为例,但基本原则保持不变,可用于任何类型的基…...

Python读取.dat格式数据并转为.png,.jpg,.bmp等可视化格式(附代码)

.dat文件的命名规则没有统一的规定,但通常以.dat为扩展名。 目录 一、 .dat格式数据1.1 .dat数据用途1.2 常见的.dat文件格式1.3 .dat文件示例 二、读取.dat格式数据2.1 单个.dat文件读取并转换2.1.1 代码2.1.2 查看数据2.1.3 输出查看8Bit图片 2.2 批量.dat文件读取…...

matplotlib 默认属性和绘图风格

matplotlib 默认属性 一、绘图风格1. 绘制叠加折线图2. Solarize_Light23. _classic_test_patch4. _mpl-gallery5. _mpl-gallery-nogrid6. bmh7. classic8. fivethirtyeight9. ggplot10. grayscale11. seaborn12. seaborn-bright13. seaborn-colorblind14. seaborn-dark15. sea…...

ip地址怎么转化为十进制

​IP地址是在计算机网络中广泛使用的一种标识符,它用于唯一地标识网络上的设备。在网络通信过程中,IP地址扮演着非常重要的角色。但是,对于一些非专业人士来说,IP地址可能是一个陌生的概念。为了更好地理解IP地址,本文…...

【Spring进阶系列丨第五篇】详解Spring中的依赖注入

文章目录 一、说明二、构造函数注入2.1、方式一【index索引方式】2.1.1、定义Bean2.1.2、主配置文件中配置Bean2.1.3、测试 2.2、方式二【indextype组合方式】2.2.1、定义Bean2.2.2、主配置文件配置Bean2.2.3、测试2.2.4、解决方案 2.3、方式三【name方式】2.3.1、定义Bean2.3.…...

DAP数据集成与算法模型如何结合使用

企业信息化建设会越来越完善,越来越体系化,当今数据时代背景下更加强调、重视数据的价值,以数据说话,通过数据为企业提升渠道转化率、改善企业产品、实现精准运营,为企业打造自助模式的数据分析成果,以数据…...

大数据监控

HBase 监控 {name“RegionServer”,sub“Server”,} irate(hadoop_hbase_totalrequestcount[5m]) irate(hadoop_hbase_totalrequestcount{instanceName“hacluster4”}[2m]) https://blog.csdn.net/Samooyou/article/details/129275640 https://www.tencentcloud.com/zh/doc…...

【C语言】数据结构——小堆实例探究

💗个人主页💗 ⭐个人专栏——数据结构学习⭐ 💫点击关注🤩一起学习C语言💯💫 导读: 我们在前面学习了单链表和顺序表,以及栈和队列。 今天我们来学习小堆。 关注博主或是订阅专栏&a…...

Vue中比较两个JSON对象的差异

要在Vue.js中实现JSON数据的对比差异功能,你可以使用一些库来简化任务,比如diff-match-patch。以下是一个简单的例子,演示如何使用deep-diff库在Vue.js中比较两个JSON对象的差异: 首先,确保你的项目中已经安装了diff-m…...

前端知识库Html5和CSS3

1、常见的水平垂直居中实现方案 最简单的方案是flex布局 .container{display: flex;align-items: center;justify-content: center; }绝对定位配合margin:auto(一定要给.son宽高) .father {position: relative;height: 300px; } .son {position: absolute;top: 0;right: 0;b…...

智能优化算法应用:基于鸡群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于鸡群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于鸡群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鸡群算法4.实验参数设定5.算法结果6.参考文献7.MA…...

Apollo配置发布原理解析

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…...

TrustGeo论文问题理解

1、网络空间测绘中,如何理解地标? 在网络空间测绘中,地标可以理解为在互联网空间中具有明显特征和稳定性的实体,它们可以作为网络空间的基准点,用于定位和标识其他网络实体。地标通常是在网络空间中具有较高价值和影响…...

子查询在SQL中的应用和实践

作者:CSDN-川川菜鸟 在SQL中,子查询是一种强大的工具,用于解决复杂的数据查询问题。本文将深入探讨子查询的概念、类型、规则,并通过具体案例展示其在实际应用中的用途。 文章目录 子查询概念子查询的类型子查询的规则实际案例分析…...

C# Socket通信从入门到精通(14)——多个异步UDP客户端C#代码实现

前言: 在之前的文章C# Socket通信从入门到精通(13)——单个异步UDP客户端C#代码实现我介绍了单个异步Udp客户端的c#代码实现,但是有的时候,我们需要连接多个服务器,并且对于每个服务器,我们都有一些比如异步发送、异步接收的操作,那么这时候我们使用之前单个异步Udp客…...

【教3妹学编程-算法题】需要添加的硬币的最小数量

3妹:2哥2哥,你有没有看到新闻, 有人中了2.2亿彩票大奖! 2哥 : 看到了,2.2亿啊, 一生一世也花不完。 3妹:为啥我就中不了呢,不开心呀不开心。 2哥 : 得了吧,你又不买彩票&…...

【异常解决】SpringBoot + Maven 在 idea 下启动报错 Unable to start embedded Tomcat(已解决)

Unable to start embedded Tomcat(已解决) 一、背景介绍二、原因分析2.1 网络上整理2.2 其他原因 三、解决方案 一、背景介绍 spring boot(v2.5.14) maven idea 启动项目 之前项目一直启动的好好的,都能正常运行。重启的时候突然就不能启…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

AspectJ 在 Android 中的完整使用指南

一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...

EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势

一、WebRTC与智能硬件整合趋势​ 随着物联网和实时通信需求的爆发式增长,WebRTC作为开源实时通信技术,为浏览器与移动应用提供免插件的音视频通信能力,在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能,对实时…...