python-paramiko让你远程在服务器上执行命令

简介: python-paramiko让你远程在服务器上执行命令

本篇文章简述SSHclient对象的常用方法,并提供一个简单用例

connect()

连接到ssh服务器上去并且进行认证,并且会根据主机的秘钥检查服务器的主机秘钥,如果服务器主机的hostname没有在system host keys和local host keys中找到,将会使用缺少主机秘钥的策略,默认的策略是拒绝秘钥并且引发SSHException.

这里如果大家没有用本地的终端通过ssh访问过远程服务器的话,在.ssh文件里的host_key文件是不会保存服务器的秘钥的。就会引发SSHException。

下面介绍几个常用的参数

参数 解释
hostname(str) 需要连接的主机
port(int) 端口号,默认22
username(str) 需要登录的用户名
password(str) 密码
passphrase(str) 解码私钥
pkey(PKey) 可选用于认证的私钥
key_filename(str) 尝试进行身份验证的可选私钥和或证书的文件名或文件名列表

timeout(float): TCP连接的可选超时(以秒为单位)

allow_agent(bool) | 默认为True,设置为False以禁用连接到SSH代理

look_for_keys(bool): 默认为True,设置为False可禁用在〜/.ssh /中搜索可发现的私钥文件

该方法将会抛出的异常:

BadHostKeyException: 如果无法验证服务器的主机秘钥

AuthenticationException: 如果用户认证失败

SSHException: 在SSH会话建立的过程中出现错误

exec_command()

在SSH服务器上执行命令。一个新的Channel将会打开,并执行所请求的命令。命令的输入和输出流作为代表stdin,stdout,stderr。

参数 解释
command(str) 执行的命令
bufsize(int) 解释方式与Python中的内置file()函数相同
timeout(int) 设置命令的channel超时
get_pty(bool) 向服务器请求伪终端(默认为false)

return

返回命令执行后的stdin,stdout,stderr(3-tuple)

raise

抛出SSHException,如果服务端没有正常执行命令

close()

关闭SSHClient和底层的Transport

get_host_keys()

获取到HostKeys对象,可用于检查或更改本地主机密钥。

get_transport()

返回基础Transport对象,可用于执行更底层的任务,例如打开特定种类的channels

load_host_keys(filename)

加载本地的主机密钥文件,可以多次调用此方法。 每个新的主机密钥集将与现有的密钥集合并(如果存在冲突,则用新的旧密钥合并)。 自动保存时,将使用最后一个主机名。

load_system_host_keys(filename=None)

加载系统的主机密钥文件。如果filename保留为None,将尝试从用户的本地“已知主机”文件中读取密钥(由OpenSSH使用),并且如果无法读取该文件,则不会引发异常。这可能仅在posix上有用。

最后发一个简单的用例

from paramiko import SSHClient
client = SSHClient()
client.load_system_host_keys()
client.connect(hostname = "your ip", username= "your username", password = "your password")
stdin,stdout,stderr = client.exec_command("pwd")
print(stdout.read().decode("utf-8"))
client.close()


相关文章
|
2月前
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
78 1
思科设备巡检命令Python脚本大集合
|
2月前
|
监控 Linux Shell
|
29天前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
141 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
2月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
155 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
2月前
|
Python
Python PDB命令介绍
【10月更文挑战第15天】 使用PDB的方式有两种,其中一种是在脚本中添加代码,不觉得这种方式比print好在哪里,所以这种方式此文不表。这里我们只学习PDB的命令行使用方式
46 4
|
2月前
|
IDE 网络安全 开发工具
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
本文介绍了如何在PyCharm专业版中连接远程服务器并配置远程Python环境解释器,以便在服务器上运行代码。
339 0
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
|
2月前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
411 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
|
2月前
|
弹性计算 安全 Linux
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
|
2月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
43 1