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

2023-12-05 08:36

本文主要是介绍《python每天一小段》--(9)使用Paramiko库,批量操作linux服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

操作如图:

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

安装模块

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

在这里插入图片描述

代码解析

以下是代码的详细解释:

import paramiko
import sysdef 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操作远程服务器有所帮助!

这篇关于《python每天一小段》--(9)使用Paramiko库,批量操作linux服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/456868

相关文章

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd