Python查看多台服务器进程的脚本分享

下面就是详细讲解「Python查看多台服务器进程的脚本分享」的完整攻略。

Python查看多台服务器进程的脚本分享

背景描述

对于运维人员来说,查看多台服务器上的进程状态是必要的工作之一,手动登录各个服务器进行查看是费时费力的。使用Python编写一个脚本可以大大提高效率。本文分享如何使用Python脚本查看多台服务器进程状态。

环境准备

我们需要在本地电脑上运行一个Python环境,并在代码中使用paramiko库。paramiko库是Python的一个SSH包,主要用于远程连接Linux/Unix服务器进行操作。

步骤

1. 安装paramiko库

使用pip命令安装paramiko库:

pip install paramiko

2. 编写Python脚本

我们来编写一个Python脚本,实现查看多台服务器上的进程状态。

import paramiko

servers = ['192.168.1.1', '192.168.1.2']  #服务器IP列表
username = 'root'  #SSH用户名
password = 'password'  #SSH密码

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

for server in servers:
    client.connect(server, username=username, password=password)
    stdin, stdout, stderr = client.exec_command('ps aux')
    print(f"===进程状态({server})===")
    print(stdout.read().decode())
    client.close()

这个脚本会依次连接服务器列表中的每一台服务器,执行"ps aux"命令,打印出进程状态。

示例说明

我们来模拟一个服务器列表,包含两台服务器:

servers = ['192.168.1.1', '192.168.1.2']

执行脚本后,输出如下:

===进程状态(192.168.1.1)===
root         1  0.0  0.0  18024  1080 ?        Ss   Jun17   0:21 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Jun17   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   Jun17   0:00 [rcu_gp]
...
===进程状态(192.168.1.2)===
root         1  0.0  0.0  23712  1132 ?        Ss   Jun17   1:06 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Jun17   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   Jun17   0:00 [rcu_gp]
...

可以看到,脚本成功连接了两台服务器,并输出了进程状态。

3. 扩展功能

在实际应用中,我们可能需要查看特定进程的状态。可以根据进程名字来过滤:

import paramiko

servers = ['192.168.1.1', '192.168.1.2']  #服务器IP列表
username = 'root'  #SSH用户名
password = 'password'  #SSH密码
process_name = 'nginx'  #进程名称

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

for server in servers:
    client.connect(server, username=username, password=password)
    stdin, stdout, stderr = client.exec_command(f"ps aux | grep {process_name}")
    print(f"===进程状态({server})===")
    print(stdout.read().decode())
    client.close()

这个脚本会查找"nginx"进程,并输出进程状态。

常见问题

1. 如何将结果保存到文件中?

可以将print改为写入文件的操作:

import paramiko

servers = ['192.168.1.1', '192.168.1.2']  #服务器IP列表
username = 'root'  #SSH用户名
password = 'password'  #SSH密码
process_name = 'nginx'  #进程名称
output_file = 'result.txt'

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

with open(output_file, 'w') as f:
    for server in servers:
        client.connect(server, username=username, password=password)
        stdin, stdout, stderr = client.exec_command(f"ps aux | grep {process_name}")
        f.write(f"===进程状态({server})===\n")
        f.write(stdout.read().decode() + '\n')
        client.close()

这个脚本会将结果写入到result.txt文件中。

2. 如何处理异常情况?

使用try except捕获异常,避免因为连接或执行命令失败而终止脚本:

import paramiko

servers = ['192.168.1.1', '192.168.1.2']  #服务器IP列表
username = 'root'  #SSH用户名
password = 'password'  #SSH密码
process_name = 'nginx'  #进程名称
output_file = 'result.txt'

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

with open(output_file, 'w') as f:
    for server in servers:
        try:
            client.connect(server, username=username, password=password)
            stdin, stdout, stderr = client.exec_command(f"ps aux | grep {process_name}")
            f.write(f"===进程状态({server})===\n")
            f.write(stdout.read().decode() + '\n')
        except:
            f.write(f"===连接({server})失败===\n")
        finally:
            client.close()

这个脚本会将连接或执行命令出现异常的服务器输出到result.txt文件中,并继续执行下一台服务器的操作。

结语

使用Python脚本查看多台服务器进程状态可以大大提高工作效率,同时也避免了手动登录各个服务器的繁琐操作。希望本文可以对读者有所帮助,谢谢阅读!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python查看多台服务器进程的脚本分享 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 利用python清除移动硬盘中的临时文件

    利用Python清除移动硬盘中的临时文件的攻略如下: 1. 确定移动硬盘路径 首先,我们需要确定移动硬盘的路径。可以通过在计算机中插入移动硬盘,然后打开资源管理器,在“我的电脑”或“此电脑”中找到移动硬盘所在的盘符。 例如,移动硬盘的路径为”E:”。 2. 编写Python脚本 接下来,我们需要编写Python脚本,用于查找并清除指定路径下的临时文件。代码示…

    人工智能概论 2023年5月25日
    00
  • 华硕灵耀X双屏Pro2022怎么样 华硕灵耀X双屏Pro2022评测

    华硕灵耀X双屏Pro2022怎么样——评测报告 华硕灵耀X双屏Pro2022是一款配置高、性能强的双屏轻薄本,配备了15.6英寸主屏幕和14.1英寸副屏幕,支持触屏和多点触控。下面将从外观、性能、操作体验、电池续航等多个方面进行全面评测。 外观 华硕灵耀X双屏Pro2022采用金属材质,外观时尚简约。15.6英寸主屏幕和14.1英寸副屏幕的双屏设计提升了工作…

    人工智能概览 2023年5月25日
    00
  • 一文带你安装opencv与常用库(保姆级教程)

    首先我需要说明一下Markdown文本格式的基本语法: 一级标题 二级标题 三级标题 无序列表1 无序列表2 无序列表3 有序列表1 有序列表2 有序列表3 代码块 加粗文本 斜体文本 现在开始讲解“一文带你安装opencv与常用库(保姆级教程)”这篇文章的完整攻略: 安装Anaconda 首先,你需要安装Anaconda来管理你的Python环境。你可以直…

    人工智能概览 2023年5月25日
    00
  • Django实现发送邮件功能

    下面是详细的“Django实现发送邮件功能”的攻略: 1. 配置邮箱 在Django中实现向用户发送邮件,需要先在Django项目中配置邮箱。 步骤如下:- 打开项目的settings.py文件,并找到EMAIL_HOST、EMAIL_PORT、EMAIL_HOST_USER、EMAIL_HOST_PASSWORD等相关项目。- 在这些项目中填写自己的邮箱信…

    人工智能概览 2023年5月25日
    00
  • windows10在visual studio2019下配置使用openCV4.3.0

    下面是详细的“windows10在visual studio2019下配置使用openCV4.3.0”的完整攻略: 步骤一:下载与安装openCV 打开openCV的官网(https://opencv.org/)并下载openCV的最新版(当前为4.3.0版本)。 下载完毕后,将包含openCV的zip文件解压到本地任意目录(例如D:\OpenCV)。 步骤…

    人工智能概览 2023年5月25日
    00
  • python文件与路径管理方法

    Python文件与路径管理方法是Python编程中非常重要的一个方面,熟练掌握文件与路径管理方法能够提高编程效率。下面我将为您详细讲解Python文件与路径管理方法的完整攻略。 文件操作 在Python编程中,文件操作是非常常见的操作。常见的文件操作有读取文件、写入文件、追加文件、删除文件等。 打开文件 打开文件可以使用open()函数,语法格式如下: fi…

    人工智能概览 2023年5月25日
    00
  • OpenCV连通域数量统计学习示例

    让我来详细讲解一下 “OpenCV连通域数量统计学习示例” 的完整攻略。 概述 “OpenCV连通域数量统计学习示例” 是一个通过 OpenCV 库实现的图像处理程序。该程序可以统计一张图片中连通域的数量,并将其展示在屏幕上。本篇攻略将详细介绍该程序的实现过程。 步骤 以下是实现该程序的步骤: 步骤一:导入 OpenCV 库 首先,我们需要导入 cv2 模块…

    人工智能概论 2023年5月25日
    00
  • 如何判断pytorch是否支持GPU加速

    判断PyTorch是否支持GPU加速的攻略如下: 1. 查看PyTorch是否已经安装了GPU支持 在PyTorch已经成功安装的情况下,可以通过以下方式查看是否支持GPU: import torch if torch.cuda.is_available(): print("PyTorch支持GPU加速") else: print(&qu…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部