python使用paramiko实现ssh的功能详解

Python使用Paramiko实现SSH的功能详解

什么是Paramiko

Paramiko是Python下的SSH客户端库,通过Paramiko可以实现远程服务器的连接和操作,包括执行命令、上传下载文件等。使用Paramiko需要安装paramiko库和pycrypto库。

Paramiko的基本用法

连接SSH服务器

使用Paramiko连接SSH服务器的方法是创建SSHClient对象,然后调用connect方法连接远程服务器。连接时需要指定服务器的IP地址、用户名和密码。

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='root', password='123456')

其中set_missing_host_key_policy方法是设置当遇到新的SSH服务器时(即第一次连接某个服务器),Paramiko应该采取的策略。AutoAddPolicy会自动添加任何新的SSH服务器,但不会验证SSH服务器是否真的可信。开发者也可以根据需要定义自己的策略。

执行远程命令

Paramiko连接SSH服务器后,就可以通过exec_command方法执行远程命令。该方法返回三个文件对象,分别对应命令的标准输入、标准输出和标准错误输出。在执行命令时,需要注意一些细节问题:

  • 完整的命令需要在连接的远程服务器上可用,可以在SSH客户端上登录远程服务器,手动执行一下命令,确保命令能够正确执行。
  • 在执行命令时,需要等待命令执行完毕,才能够读取标准输出和标准错误输出,否则可能会得到不完整的输出结果。
stdin, stdout, stderr = ssh.exec_command('ls /')
print(stdout.read().decode())
print(stderr.read().decode())

上传和下载文件

Paramiko还可以实现上传和下载文件的操作。其原理是利用SFTP协议在本地机器和远程服务器之间传输文件。

# 文件上传
sftp = ssh.open_sftp()
sftp.put('localfile.txt', 'remotefile.txt')

# 文件下载
sftp.get('remotefile.txt', 'localfile.txt')

在上传和下载文件时,需要注意以下内容:

  • 文件的本地路径和远程路径都需要是绝对路径。
  • 文件上传和下载都是阻塞操作,需要等待操作完成才能继续进行下一步操作。

Paramiko的高级用法

在使用Paramiko进行SSH操作时,可能还会涉及到一些高级的操作,例如使用SSH密钥进行连接、支持多个SSH会话等。这里就不再展开讲解,感兴趣的读者可以继续深入学习。

示例

示例1:检查远程主机的CPU和内存使用情况

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='root', password='123456')

stdin, stdout, stderr = ssh.exec_command('top -bn1 | grep "Cpu(s)" && top -bn1 | grep "MiB Mem"')
print(stdout.read().decode())
print(stderr.read().decode())

ssh.close()

示例2:上传本地文件到远程服务器

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='root', password='123456')

sftp = ssh.open_sftp()
sftp.put('localfile.txt', 'remotefile.txt')

ssh.close()

这两个示例演示了如何使用Paramiko连接SSH服务器并执行命令、上传下载文件的操作。开发者可以根据自己的需要进行修改和扩展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python使用paramiko实现ssh的功能详解 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 18个帮你简化代码的Python技巧分享

    18个帮你简化代码的Python技巧分享 本文介绍18个Python技巧,旨在帮助程序员提高Python代码的可读性、简洁性和效率。 1. 列表推导式 列表推导式是Python中非常常用的一种构建列表的方法,可以用简洁的代码生成复杂的列表。以下是一个示例: nums = [1, 2, 3, 4, 5] squares = [num**2 for num in…

    python 2023年5月31日
    00
  • python爬取酷狗音乐Top500榜单

    在本攻略中,我们将介绍如何使用Python爬取酷狗音乐Top500榜单。以下是一个完整攻略,包括两个示例。 步骤1:安装必要的库 首先,需要安装必要的库。将使用requests库来发送HTTP请求,并使用BeautifulSoup库来解析HTML页面。 以下是一个示例代码,演示如何使用安装requests和BeautifulSoup: pip install…

    python 2023年5月15日
    00
  • 详细总结Python常见的安全问题

    详细总结Python常见的安全问题 Python是一门非常流行的编程语言,在许多领域得到了广泛的使用。然而,像其他编程语言一样,Python也存在着一些安全问题,开发者需要了解并避免这些问题。本文将详细总结Python常见的安全问题,并提供示例说明。 命令注入 命令注入是一种通过利用应用程序对用户输入的不安全处理方式来执行恶意代码的攻击方式。在Python中…

    python 2023年6月2日
    00
  • Python实现将Excel转换成xml的方法示例

    下面就为您详细讲解“Python实现将Excel转换成xml的方法示例”的完整实例教程,包含以下步骤: 环境准备 读取Excel中的数据 将数据转换为xml 将xml保存到文件中 接下来我们逐步分步讲解: 环境准备 在进行Excel转换成xml的操作之前,我们需要安装openpyxl库。这个库可以让我们读取Excel文件中的数据,同时也可以将数据转换成xml…

    python 2023年5月13日
    00
  • 用Python调用win命令行提高工作效率的实例

    首先我们需要明确一点,使用Python调用win命令行是一种非常实用的工作方式,通过这种方式我们可以快速地完成一系列复杂的操作,提高工作效率。 下面是用Python调用win命令行的完整攻略: 1. 准备工作 首先,我们需要确保计算机上已经安装 Python 环境,并且系统环境变量中已经添加了 Python 的路径。如果没有,请先安装 Python 并设置环…

    python 2023年6月3日
    00
  • 以SortedList为例详解Python的defaultdict对象使用自定义类型的方法

    针对“以SortedList为例详解Python的defaultdict对象使用自定义类型的方法”的完整攻略,我将分为以下两个部分来进行讲解: SortedList的介绍和使用 defaultdict对象使用自定义类型的方法 一、SortedList的介绍和使用 SortedList是Python中的一个第三方库,它提供的是有序列表的实现。相比于Python…

    python 2023年5月13日
    00
  • 11行Python代码实现解密摩斯密码

    下面是详细的攻略: 1.了解摩斯密码 摩斯密码是一种用点(·)和线(–)作为符号,用于传输字母、数字和标点符号的电报代码。点和线的不同排列组合代表不同的字符。例如,字母A的摩斯码是·—,字母B的摩斯码是—···。 2.理解代码思路 这段Python代码使用了一个字典来存储每个字符所对应的摩斯码,然后使用字符串处理方法join()和split()来实现编码和解…

    python 2023年5月20日
    00
  • 处理Python中的URLError异常的方法

    处理Python中的URLError异常的方法: 当我们在Python程序中使用urllib库发起网络请求时,可能会遇到URLError异常。这种异常通常是由于网络问题、DNS解析错误或无效的URL等原因导致的。如何处理这种异常呢?下面是我们的攻略: 1. 异常处理 当我们发起网络请求时,我们可以通过捕获相应的异常来处理URLError。例如: import…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部