《python每天一小段》--(2)使用Paramiko库,批量操作linux服务器

news2024/11/18 11:33:58

使用Paramiko库,批量操作多Linux服务器

使用Paramiko库建立SSH连接并执行命令获取多个Linux服务器的磁盘信息。通过这个例子,你可以学习到如何使用Python自动化操作远程服务器。

操作如图:

查看了两台服务器的磁盘容量:
在这里插入图片描述

安装模块

使用jupyter安装paramiko模块:pip install paramiko,如果是windows系统使用cmd即可。

在这里插入图片描述

代码解析

以下是代码的详细解释:

import paramiko
import sys

def sshExeCMD(ip, username, password, port):
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    try:
        ssh_client.connect(hostname=ip, port=port, username=username, password=password)
    except Exception as e:
        print("连接服务器%s失败,请检查IP地址和端口是否正确!" % ip)
        print(e)
        sys.exit(1)

    stdin, stdout, stderr = ssh_client.exec_command("df -hT")
    print("服务器%s磁盘信息:" % ip)
    print(stdout.read().decode('utf-8'))

    ssh_client.close()

if __name__ == '__main__':
    servers = {
        "192.168.31.223": {
            "username": "root",
            "password": "123456",
            "port": 22
        },
        "192.168.31.162": {
            "username": "root",
            "password": "123456",
            "port": 22
        }
    }
    for ip, info in servers.items():
        sshExeCMD(
            ip=ip,
            username=info.get("username"),
            password=info.get("password"),
            port=info.get("port")
        )

代码说明

  1. 导入必要的模块:paramiko用于SSH连接,sys用于系统相关操作。

  2. 定义了一个名为sshExeCMD的函数,用于执行SSH连接和命令执行操作。函数接受四个参数:ip(服务器的IP地址),username(用户名),password(密码)和port(SSH端口号)。

  3. 在函数内部,创建了一个SSH客户端对象ssh_client,并使用paramiko.AutoAddPolicy()设置了自动添加服务器主机密钥到本地known_hosts文件的策略。

  4. 使用ssh_client.connect()方法连接到指定的服务器。如果连接失败,打印错误信息并退出程序。

  5. 如果连接成功,使用ssh_client.exec_command()方法执行命令df -hT,该命令用于获取磁盘信息。返回的结果包括标准输入、标准输出和标准错误。

  6. 打印服务器IP和磁盘信息。

  7. 关闭SSH连接。

  8. __name__ == '__main__'的条件下,定义了一个包含多个服务器信息的字典servers

  9. 使用for循环遍历servers字典中的每个服务器信息。

  10. 调用sshExeCMD函数,并传入服务器的IP地址、用户名、密码和端口号作为参数。

总结

本文介绍了如何使用Paramiko库在Python中操作多个Linux服务器。通过建立SSH连接并执行命令,我们可以获取远程服务器的磁盘信息。这个例子展示了Python在自动化操作服务器方面的强大能力,为服务器管理和维护提供了便利。

希望本文对你理解Paramiko库的使用以及Python操作远程服务器有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1283370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【电路笔记】-电阻器额定功率

电阻器额定功率 文章目录 电阻器额定功率1、概述2、电阻功率(P)3、功率电阻器4、电阻器额定功率示例15、电阻器额定功率示例2 电能被电阻吸收,因为它是电压和电流的乘积,一些电阻将这种电能转化为热量。 1、概述 当电流由于电阻器…

正则表达式(3):入门

正则表达式(3):入门 小结 本博文转载自 从这篇文章开始,我们将介绍怎样在Linux中使用”正则表达式”,如果你想要学习怎样在Linux中使用正则表达式,这些文章就是你所需要的。 在认识”正则表达式”之前&am…

【unity3D】unity中如何查找和获取游戏物体

💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity中游戏物体的查找与获取 这里写自定义目录标题 获取当前物体的基本属性查找其它物体- 通过名称查找其它物体- 通过标签查找- 通过类…

微信开发者工具里面模拟操作返回、录屏、网络速度、截屏等操作

有时候可能因为自己开发的页面使用了自定义的样式,所以没有了左上角的导航返回,所以进入我自定义的页面后,想要返回的话,就可以用到这里面你的操作,或者想截屏了也可以直接使用里面的截屏,或者返回主页面等…

如何有效进行测试执行进度计划

测试执行通常都是处于软件测试生命周期的关键路径上,它不仅在测试过程中占有重要的地位,并且也会花费大量的测试时间。针对测试执行而进行的计划,即测试执行进度计划,是进行测试执行进度控制的基础。在进行测试执行进度计划制订的…

龙迅分配器LT86102UXE/LT86104UX,HDMI一分二/HDMI一分四

龙迅LT86102UXE描述; Lontium LT86102UXE HDMI2.0分配器具有1:2的分配器,符合HDMI2.0/1.4规范,最大6Gbps高速数据速率,自适应均衡RX输入和预先强调的TX输出,以支持长电缆应用程序,内部TX通道交换灵活的PCB…

C++进阶篇6---lambda表达式

目录 一、lambda表达式 1.引入 2、lambda表达式语法 二、包装器---function 1.引入 2.包装器介绍 三、bind 一、lambda表达式 1.引入 class Person { public:Person(int age,string name):_age(age),_name(name){} //private://方便后面的举例int _age;string _name…

全网最新最全的自动化测试教程:python+pytest接口自动化(9)-cookie绕过登录(保持登录状态

在编写接口自动化测试用例或其他脚本的过程中,经常会遇到需要绕过用户名/密码或验证码登录,去请求接口的情况,一是因为有时验证码会比较复杂,比如有些图形验证码,难以通过接口的方式去处理;再者&#xff0c…

【openssl】RSA 生成公钥私钥 |通过私钥获取公钥

通过博客:Window系统如何编译openssl 编译出openssl.exe(位于apps文件夹下)。 现在需要使用它获得公钥私钥、通过私钥获取公钥 目录 说明!!! 一.定位openssl.exe目录 二、进入命令cmd 三、生成私钥 …

知虾数据工具:助力Shopee商家实现数据化运营的有力助手

在如今竞争激烈的电商市场中,了解市场趋势、优化产品和店铺运营、了解竞争对手等是商家取得成功的关键。而针对Shopee平台的知虾数据工具则为商家和市场分析师提供了一个强大的数据分析工具。本文将介绍知虾数据工具的主要功能,包括多站点数据分析、行业…

抖音视频水印怎么去除?这三个视频去水印技巧值得收藏!

抖音视频水印怎么去除?随着互联网的持续发展,越来越多的人选择使用视频分享平台来展示他们的生活与工作。然而,上传到这些平台上的许多视频常常遭到恶意水印的攻击,严重影响了观众的观看体验。今天,我们将分享三个视频…

一键式紧急报警柱系统

随着科技的不断发展,一键式紧急报警柱在我们的生活和工作中扮演着越来越重要的角色。在这篇文章中,我们将一起探究与一键式紧急报警柱有关的知识。 一键式紧急报警柱是一种常见的安全防护设备,能够在紧急情况下快速发出警报,保护…

ChatGPT发布一年后,搜索引擎的日子还好吗?

导读:生成式AI,搜索引擎的终结者还是进化加速器 ChatGPT发布刚刚一年,互联网世界已经换了人间。 2023年,以ChatGPT和大模型为代表的生成式AI浪潮对全球互联网、云计算、人工智能领域都带来巨大冲击。而且生成式AI在各行各业的应用…

Oracle的数据一致性机制原理

一、前言 在单用户环境下,在操作数据库是不需要考虑其他用户会修改同一个数据。但是在多用户的情况下,多个事务可能会修改同一个数据,最终会得到错误的数据结果。 Oracle数据库是通过 multiversion consistency model(多版本数据…

HDFS客户端及API操作实验

实验二 HDFS客户端及API操作 实验目的: 1.掌握HDFS的客户端操作,包括上传文件、下载文件、重命名、查看目录等; 2.掌握HDFS的Java API使用,能够利用Java API实现上传、下载等常用操作; 实验内容: HDF…

使用coco数据集进行语义分割:数据预处理与损失函数

如何coco数据集进行目标检测的介绍已经有很多了,但是关于语义分割几乎没有。本文旨在说明如何处理 stuff_train2017.json stuff_val2017.json panoptic_train2017.json panoptic_val2017.json,将上面那些json中的dict转化为图片的label mask&am…

【Qt开发流程】之定时器事件与随机数示例

描述 QObject是所有Qt对象的基类,提供了Qt中基础的定时器支持。通过QObject::startTimer()函数,可以使用毫秒为单位的时间间隔来启动一个定时器。该函数返回一个唯一的整数定时器ID。该计时器现在将以规律的间隔触发,直到显式调用QObject::k…

谷歌用AI模型发现220万种新材料,研究能力超越人类!

谷歌旗下的AI研究机构DeepMind在全球顶级学术期刊《Nature》上发布了一篇论文,通过深度学习、计算机视觉、大数据等,开发了一个名为GNoME的图神经网络模型,主要用于材料发现。 研究团队通过GnoME便快速发现了220万个新的材料晶体结构&#x…

JVM==>图解字节码指令

一,原始代码 我们来看一下执行这段代码的具体流程 那执行这段代码中 JVM就会把已经编译好的.class文件加载到内存中,交给CPU运行 1)常量池载入运行时常量池 我们发现 10 并没有被存入常量池中, 这是因为short范围以内的数字不会…

微机原理9

一、单项选择题(本大题共15小题,每小题3分、共45分。在每小题给出的四个备选项中,选出一个正确的答案,请将选定的答案填涂在答题纸的相应位置上。) 8088 系统的内存最大容量为 16MB. 其地址总线为() A. 16 位 B. 20 位 C. 24 位 D. 32 位 2,以CPU为核心…