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日

相关文章

  • Python判断对象是否为文件对象(file object)的三种方法示例

    这里为您分享一下“Python判断对象是否为文件对象(file object)的三种方法示例”的完整攻略。 背景介绍 在Python中,文件对象(file object)是经常被使用到的一种数据类型。它可以用于读写文件和处理文件数据等任务。但是,在写Python程序的时候,我们也会碰到需要判断一个对象是否是文件对象的情况,这时候我们就需要使用一些方法来进行判…

    python 2023年6月3日
    00
  • 详解Python中for循环的定义迭代方法

    下面是Python中for循环的完整攻略。 什么是for循环? Python中的for循环是一种迭代结构,它可以轻松地遍历序列和其他可迭代对象的元素。for循环执行数次,每次执行时从可迭代对象中获取一个元素,直到可迭代对象的最后一个元素被处理为止。 for循环语法 for循环的基本语法如下: for 变量 in 可迭代对象: # 执行代码块 其中,变量代表从…

    python 2023年5月14日
    00
  • python-sys.stdout作为默认函数参数的实现

    Python中的sys模块提供了一些函数和变量,可以访问和操作与Python解释器系统相关的变量和函数。其中,sys.stdout是一个标准输出流的缓存区。在函数的默认参数中使用sys.stdout可以非常方便地控制函数的输出位置。下面是python-sys.stdout作为默认函数参数实现的攻略。 步骤1:导入sys模块 使用sys.stdout需要导入s…

    python 2023年6月2日
    00
  • Python+drawpad实现CPU监控小程序

    下面是详细的Python+drawpad实现CPU监控小程序的攻略: 一、准备工作 1.安装Python环境 首先要安装Python环境,建议选择Python 3.x版本来进行开发。可以从Python官网下载安装包并进行安装。 2.安装drawpad模块 使用drawpad模块需要先安装该模块。可以使用pip命令进行安装,打开终端(或cmd)窗口,输入以下命…

    python 2023年5月18日
    00
  • 浅谈Python traceback的优雅处理

    浅谈Python traceback的优雅处理 什么是traceback Traceback是Python运行过程中出现错误时的详细信息记录,可以帮助我们定位错误并进行解决。一般来说,我们会看到一些如下的错误信息: Traceback (most recent call last): File "example.py", line 3, …

    python 2023年6月3日
    00
  • python编写爬虫小程序

    接下来我将为你详细讲解“Python编写爬虫小程序”的完整攻略。以下是步骤: 步骤1:确定需求和目标 首先,我们需要明确所要爬取的数据的来源和格式,并确定爬取目标的具体地址和标签。 例如,我们要爬取某个网站的商品信息,那么我们需要确认该网站的网址、商品数据的标签、存储的格式等。 步骤2:选型和安装相关工具 选择合适的爬虫框架,应用爬虫框架提供的API,可以大…

    python 2023年5月14日
    00
  • Python函数中的不定长参数相关知识总结

    下面是关于“Python函数中的不定长参数相关知识总结”的完整攻略: 1.什么是不定长参数 在Python中,有时候函数的参数个数是不确定的,这就需要我们使用不定长参数。不定长参数包括两种:可变参数和关键字参数。 可变参数是指传入的参数个数是不确定的,可变参数在函数内部自动组装为元组(tuple)类型。 关键字参数是指传入的参数个数也是不确定的,但是和普通参…

    python 2023年5月13日
    00
  • python中os.path.exits()的坑

    当我们需要在Python中去检查一个文件或目录是否存在时,使用os.path.exists()是很常见的做法。但是,如果不了解其使用方法和一些潜在的问题,就容易遇到一些坑。本文将详细讲解如何正确地使用os.path.exists()。 什么是os.path.exists()? os.path.exists()是Python os.path模块中常用的一个函数…

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