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

yizhihongxing

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无法用requests获取网页源码的解决方法

    以下是关于Python无法用requests获取网页源码的解决方法的攻略: Python无法用requests获取网页源码的解决方法 在Python中,requests是一个流行的HTTP库,可以用于向Web发送HTTP请求和接响应。但是,在某些情况下,我们可能无法使用requests获取网页源码。以下是Python无法用requests获取网页源码的解决方…

    python 2023年5月14日
    00
  • Python 类的特殊成员解析

    Python类的特殊成员是指以双下划线(__)开头和结尾的成员,也称为魔术方法或特殊方法。这些成员在Python中具有特殊的含义和用途,可以用于自定义类的行为和操作。本文将详细介绍Python类的特殊成员的完整攻略,包括常用的特殊成员和示例。 常用的特殊成员 以下是常用的Python类的特殊成员: __init__(self, …): 构造函数,用于初始…

    python 2023年5月15日
    00
  • Python实现京东抢秒杀功能

    Python实现京东抢秒杀功能的完整攻略 京东抢秒杀是一种常见的需求,可以帮助我们在秒杀活动中抢购心仪的商品。本攻略将介绍如何使用Python实现京东抢秒杀功能。 1. 安装Python库 我们需要安装Python的selenium和webdriver库。可以使用以下命令进行安装: pip install selenium pip install webdr…

    python 2023年5月15日
    00
  • Python实现简单的2048小游戏

    Python实现简单的2048小游戏 介绍 2048游戏是一种益智类的数字游戏,玩家需要通过合并相同数字方块来达到最高得分。在本文中,我们将介绍如何使用 Python 语言来实现一个简单的 2048 小游戏。 实现步骤 1. 创建游戏的框架 首先,我们需要创建一个棋盘,用于存储数字方块的位置和值。为了方便起见,我们可以使用一个二维列表来表示棋盘,列表中的每个…

    python 2023年5月19日
    00
  • python实现远程控制电脑

    Python实现远程控制电脑需要借助于Python的socket库,这是Python中用来进行网络通信的重要库。下文将详细介绍实现远程控制电脑的完整攻略,并提供两个示例。 步骤一:创建服务端 在服务端中,我们需要导入socket库并进行以下操作: 创建一个socket对象,指定使用IPv4网络通信和TCP协议。 设置socket对象绑定的地址和端口号。 将s…

    python 2023年5月19日
    00
  • Python轻量级web框架bottle使用方法解析

    Python轻量级web框架bottle使用方法解析 Bottle是一个轻量级的Python Web框架,它具有简单、易用、快速、可扩展等特点。本攻略将介绍Bottle的使用方法,包括安装Bottle、创建Bottle应用、路由、请求和响应等操作。 步骤1:安装Bottle 在Python中,我们可以使用pip命令安装Bottle。以下是安装Bottle的示…

    python 2023年5月15日
    00
  • python字典DICT类型合并详解

    Python字典DICT类型合并详解 Python中,我们可以使用字典(dict)类型来处理键值对数据,本文将详细介绍字典的合并操作。 1. Python中字典合并的两种方式 方式一:“|”操作符 在Python 3.9及以上版本中,字典合并操作可以使用“|”操作符,例如: dict1 = {‘a’: 1, ‘b’: 2} dict2 = {‘c’: 3, …

    python 2023年5月13日
    00
  • 玩转python爬虫之正则表达式

    玩转Python爬虫之正则表达式 正则表达式是一种用于描述字符串模式的语言,可以用于匹配、查找、替换和割字符串。在Python爬虫中,正表达式是非重要的工具,可以用于从网中提取所需的信息。本文将详细讲解如何使用正则表达式进行Python爬,包括正则表达式语法re模块的常用函数以及两个常用的匹配实例。 正则表达式语法 正则表达式由一些特字符和普通字符组成,用于…

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