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月前
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
499 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
|
30天前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
332 1
|
2月前
|
安全 Linux Shell
使用SCP命令在CentOS 7上向目标服务器传输文件
以上步骤是在CentOS 7系统上使用SCP命令进行文件传输的基础,操作简洁,易于理解。务必在执行命令前确认好各项参数,尤其是目录路径和文件名,以避免不必要的传输错误。
257 17
|
3月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
483 21
|
2月前
|
安全 Linux 网络安全
Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
本文介绍如何利用Python的http.server模块,通过一行命令快速搭建支持HTTPS的安全文件下载服务器,无需第三方工具,3分钟部署,保障局域网文件共享的隐私与安全。
507 0
|
4月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
310 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
5月前
|
JSON API 数据安全/隐私保护
使用curl命令在服务器上执行HTTP请求
总的来说,curl是一个非常强大的工具,它可以让你在命令行中发送各种类型的HTTP请求。通过学习和实践,你可以掌握这个工具,使你的工作更加高效。
396 30
|
5月前
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
160 23
|
Python 调度 设计模式
python设计模式(十六):命令模式
“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。
1359 0

热门文章

最新文章

推荐镜像

更多