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中操作字符串之startswith()方法的使用

    当我们需要检查一个字符串是否以某一个特定的字符串开头时,可以使用Python中的startswith()方法来实现。该方法可以返回布尔值,如果字符串以指定的字符串开头,则返回True,否则返回False。 下面是startswith()方法的语法: string.startswith(str, beg=0, end=len(string)) 该方法有三个参数…

    python 2023年6月5日
    00
  • 使用 python 发送电子邮件:如何形成消息?

    【问题标题】:Send emails using python: how to form the message?使用 python 发送电子邮件:如何形成消息? 【发布时间】:2023-04-07 04:08:02 【问题描述】: 我正在制作一个程序,该程序将从谷歌表中检索数据,这是我一周花费多少的支出日记。成功检索数据后,程序会向我发送一封电子邮件,告诉…

    Python开发 2023年4月8日
    00
  • python ChainMap管理用法实例讲解

    下面给出“python ChainMap管理用法实例讲解”的完整攻略。 简介 ChainMap是Python内置的一个高效实现的字典组合类。它可以将多个字典组合成一个逻辑上的字典,并且在访问字典元素时,会按照组合的顺序依次查找每个字典,直到找到对应的元素。 基本使用方法 我们可以通过collections模块来导入ChainMap,然后通过使用ChainMa…

    python 2023年6月3日
    00
  • Python3多线程详解

    Python3多线程详解 Python3中的多线程模块是_thread和threading。_thread是低级模块,thread是高级模块,对_thread`进行了封装,使得使用更加方便。本文将详细介绍Python3多线程的使用方法。 创建线程 Python中创建线程有两种方式:使用_thread模块和使用threading模块。下面是两种方式的示例: 使…

    python 2023年5月13日
    00
  • 比较 Python 中的字符串索引

    【问题标题】:Compare String Indices in Python比较 Python 中的字符串索引 【发布时间】:2023-04-02 02:34:01 【问题描述】: 来自其他语言,我知道如何比较字符串索引以测试是否相等。但是在 Python 中,尝试比较字符串中的索引时出现以下错误。 TypeError: string indices mu…

    Python开发 2023年4月8日
    00
  • python获取当前目录路径和上级路径的实例

    获取当前目录路径和上级路径是Python编程中经常用到的操作之一,这里提供两种方式来实现。 获取当前目录路径 获取当前目录路径主要使用os模块中的os.getcwd()方法,可以直接返回当前操作系统指定进程的当前工作目录。代码示例如下: import os # 获取当前目录路径 current_path = os.getcwd() print("当…

    python 2023年6月2日
    00
  • Python获取时间范围内日期列表和周列表的函数

    下面是详细的Python获取时间范围内日期列表和周列表的函数攻略: 问题描述 在Python中,获取某个时间范围(例如一周、一月、一季度等)内的日期列表和周列表是一个常见的需求,因为这样可以方便的进行日期的计算、统计等操作,进而方便业务处理。本攻略将介绍如何使用Python编写函数来实现获取时间范围内日期列表和周列表的功能。 解决方案 Python中有一个十…

    python 2023年6月2日
    00
  • Python递归遍历列表及输出的实现方法

    Python递归遍历列表是常见的操作之一,递归是一种解决问题的方法,其中一个函数通过不断调用自身的方式来解决问题。下面是Python递归遍历列表及输出的实现方法的完整攻略。 1. 递归遍历列表的实现方法 要实现Python递归遍历列表并输出其中的元素,可以按照以下步骤进行: 定义一个递归函数,接受一个列表作为参数 判断列表是否为空,如果为空,则直接返回 如果…

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