使用Python进行SSH和文件传输实现方法实例

 更新时间:2023年12月25日 11:47:27   作者:简讯Alfred 爱生活爱扣钉  
这篇文章主要为大家介绍了使用Python进行SSH和文件传输实现方法实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

SSH 通常用于访问远程机器并运行命令、检索文件或上传文件。你可以使用 SFTP(安全文件传输协议)和 SCP(安全复制协议)将文件从远程机器传输到本地,反之亦然。

根据 paramiko.org 的介绍,python paramiko 模型提供了 SSHv2 协议的抽象,包括客户端和服务器端功能。作为客户端,您可以使用密码或密钥进行身份验证;作为服务器,您可以决定允许哪些用户访问以及允许访问的通道。

在本文中,我将重点介绍客户端。

使用Python进行SSH和文件传输

Paramiko.SSHClient 是 API 中记录的 Paramiko 的主要客户端,可用于与远程服务器建立连接并传输文件。

建立连接

import paramiko
ssh_client=paramiko.SSHClient()
ssh_client.connect(hostname='hostname',username='admin',password='password')

当你首次连接的时候,可能会遇到以下问题:

missing_host_key raise SSHException('Server %r not found in known_hosts' % hostname) paramiko.ssh_exception.SSHException: Server 'hostname' not found in known_hosts

之所以会出现这个错误,是因为你没有告知你的机器,你 "信任 "你试图访问的远程服务器。如果您在命令行或终端上首次尝试连接服务器,您会收到类似下面的信息:

The authenticity of host 'hostname' can't be established.RSA key fingerprint is 'key'. Are you sure you want to continue connecting (yes/no)?

当您在这里选择 "yes" 时,您就会让您的机器知道它可以信任该机器,您现在就可以访问它而无需提示,直到该机器的密钥发生变化。同样,Paramiko 还要求您验证对机器的信任。这种验证是通过调用 SSHClient 上的 set_missing_host_key_policy(),并在访问新的远程机器时传递你希望执行的策略来完成的。默认情况下,paramiko.SSHclient 会将策略设置为 RejectPolicy。如上文所述,该策略无需验证就会拒绝连接。不过,Paramiko 提供了一种 "信任所有 "密钥策略(AutoAddPolicy)。将 AutoAddPolicy 实例解析为 set_missing_host_key_policy(),可将其改为允许任何主机。

现在再运行代码就不会报错了。

在远程计算机上运行命令

要运行命令,需要在 SSHClient 上调用 exec_command,并传递命令。响应将以元组(stdin, stdout, stderr)形式返回。

例如,列出一个目录中的所有文件:

stdin, stdout, stderr = ssh_client.exec_command("ls")

根据 paramiko.org 的解释:

• stdin 是只写文件,可用于需要输入的命令;

• stdout 文件提供命令的输出结果;

• stderr 文件给出执行命令时返回的错误。如果没有错误,则为空。

需要输入的命令

有时,您需要提供密码或额外的输入信息才能运行命令。这就是 stdin 的用途。让我们用 sudo 运行上面的命令。

stdin, stdout, stderr = ssh.exec_command("sudo ls")
stdin.write('mypassword\n')
print(stdout.readlines())

这样就通过输入密码来执行了 ls 命令。

文件传输

文件传输由 paramiko.SFTPClient 处理,您可以在 Paramiko.SSHClient 实例上调用 open_sftp(),获得该客户端。

从远程机器下载文件

ftp_client=ssh_client.open_sftp()
ftp_client.get('remotefileth','localfilepath')
ftp_client.close()

从本地向远程机器上传文件

ftp_client=ssh.open_sftp()
ftp_client.put('localfilepath', 'remotefilepath')
ftp_client.close()

如果你也在工作活学习中需要用 Python 操作使用 SSH,不妨试试 paramiko,会为你带来效率上的提高。

以上就是使用Python进行SSH和文件传输实现方法实例的详细内容,更多关于Python SSH文件传输的资料请关注脚本之家其它相关文章!

相关文章

  • 构建 Python 命令行参数的 4 种常见方式

    构建 Python 命令行参数的 4 种常见方式

    这篇文章主要介绍了构建 Python 命令行参数的 4 种常见方式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • 使用Python和PySpark进行数据分析的实战教程

    使用Python和PySpark进行数据分析的实战教程

    数据分析是当今信息时代中至关重要的技能之一,Python和PySpark作为强大的工具,提供了丰富的库和功能,使得数据分析变得更加高效和灵活,在这篇文章中,我们将深入探讨如何使用Python和PySpark进行数据分析,需要的朋友可以参考下
    2024-01-01
  • Python入门_浅谈逻辑判断与运算符

    Python入门_浅谈逻辑判断与运算符

    下面小编就为大家带来一篇Python入门_浅谈逻辑判断与运算符。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Pandas数据分析之pandas文本处理

    Pandas数据分析之pandas文本处理

    这篇文章主要介绍了Pandas数据分析之pandas文本处理,pandas对文本数据也有很多便捷处理方法,可以不用写循环,向量化操作运算速度快,还可以进行高级的正则表达式,各种复杂的逻辑筛选和匹配提取信息
    2022-08-08
  • python中的装饰器详解

    python中的装饰器详解

    这篇文章主要介绍了python中的装饰器详解,本文讲解了装饰器语法、简单装饰器、带内嵌函数装饰器、带参数的装饰器等内容,需要的朋友可以参考下
    2015-04-04
  • 浅谈Pycharm的项目文件名是红色的原因及解决方式

    浅谈Pycharm的项目文件名是红色的原因及解决方式

    这篇文章主要介绍了浅谈Pycharm的项目文件名是红色的原因及解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python环境配置方式(服务器+本地)

    python环境配置方式(服务器+本地)

    这篇文章详细介绍了在服务器上安装和配置Anaconda3、TensorFlow、PyTorch等深度学习环境的步骤,包括下载、初始化、创建环境、验证安装以及解决一些常见问题
    2025-01-01
  • Python编程通过懒属性提升性能

    Python编程通过懒属性提升性能

    大家好,在我看过的 Python 教程中,很少讨论有懒属性的,今天分享 Python 的懒属性技术,可以提升程序的性能,有需要的朋友可以借鉴参考下
    2021-09-09
  • Jmeter之变量拼接方式

    Jmeter之变量拼接方式

    在Jmeter脚本中,参数值可以通过字符串和变量进行拼接,也可以使用多个变量直接拼接,无需使用连接符,如果使用python脚本,则需要按照python的语法规则进行拼接,在Jmeter中,带有引号的变量可以通过${}来识别为变量,而不会被误认为是字符串
    2024-10-10
  • Python使用functools.partial减少函数参数个数的高级技巧

    Python使用functools.partial减少函数参数个数的高级技巧

    减少函数参数个数不仅能使代码更加​​简洁易读​​,还能提高代码的​​可复用性​​和​​可维护性​​,本文将深入探讨如何使用functools.partial及其相关技术来简化函数调用接口,需要的可以了解下
    2025-10-10

最新评论