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 django集成cas验证系统

    下面是关于 Python Django 集成 CAS 验证系统的详细攻略: 什么是CAS? CAS 即 Central Authentication Service,是由耶鲁大学发起的一个单点登录(SSO)协议。CAS 提供了一个认证中心,浏览器只需要认证一次,就可以在多个应用中共享认证信息,实现单点登录。 Django集成CAS步骤 安装 pip inst…

    人工智能概览 2023年5月25日
    00
  • 浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置

    标题 浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置 背景 在使用多卡服务器进行模型训练时,由于显存限制,可能会出现一部分 GPU 显存不足无法使用,或者需要提前将一些 GPU 预留出来供其他程序使用的情况。本文将提供一些方法来解决这种情况下的显存使用问题。 方案 1. 隐藏部分 GPU 在 Linux 系统下,我们可以使用 CU…

    人工智能概论 2023年5月25日
    00
  • Django request.META.get()获取不到header头的原因分析

    当我们在使用Django框架开发Web应用时,常常需要获取这个请求的Header头信息,比如User-Agent、Authorization等。而在Django中,可以用request.META.get()方法获取Header头。但是,很多人会遇到获取不到Header头信息的情况,这是为什么呢? 本文将分以下几点详细分析原因,并提供示例说明,帮助读者理解: …

    人工智能概览 2023年5月25日
    00
  • django8.5 项目部署Nginx的操作步骤

    我可以为您提供如下关于“django8.5 项目部署Nginx的操作步骤”的完整攻略: 一、安装Nginx 执行命令:sudo apt-get update更新系统软件包列表 执行命令:sudo apt-get install nginx安装Nginx软件包 二、配置Nginx 进入Nginx配置文件目录:cd /etc/nginx/ 备份默认配置文件:su…

    人工智能概览 2023年5月25日
    00
  • Python Django切换MySQL数据库实例详解

    下面是关于Python Django切换MySQL数据库实例的完整攻略: 1. 安装MySQL数据库 如果还没有安装MySQL数据库,请先按照官方指南进行安装:MySQL官方文档 2. 安装Python Django框架 如果还没有安装Python Django框架,请先按照官方指南进行安装:Django官方文档 3. 创建Django项目和应用 创建Dja…

    人工智能概论 2023年5月25日
    00
  • python实现宿舍管理系统

    Python实现宿舍管理系统攻略 1. 概述 宿舍管理系统是一个可以对宿舍进行管理的项目。它可以记录住宿生的个人信息、住宿信息、缴费情况等,并且可以同时实现对违规宿舍的管理,包括违规记录、惩罚等功能。本文将详细讲解如何使用Python实现宿舍管理系统。 2. 数据库设计 宿舍管理系统需要使用到数据库来存储数据。在设计数据库时,需要考虑到系统所需记录的信息。以…

    人工智能概览 2023年5月25日
    00
  • opencv python 2D直方图的示例代码

    下面就是OpenCV Python 2D直方图的示例代码攻略的详细讲解: 标题 OpenCV Python 2D直方图的示例代码 简介 本文将详细讲解如何使用OpenCV Python库来绘制2D直方图,同时提供两个示例说明。 示例说明一 问题 我们有一张灰度图片,想要查看其像素值分布情况,希望能够用直方图来表示。 解决方案 以下是使用OpenCV Pyth…

    人工智能概论 2023年5月25日
    00
  • 在Windows服务器下用Apache和mod_wsgi配置Python应用的教程

    下面是在Windows服务器下用Apache和mod_wsgi配置Python应用的完整攻略。 前提条件 在开始配置之前,需要确保满足以下几个前提条件: 已经安装了 Python 和 Apache,并且能够在本地运行 Python 和 Apache。 已经安装了 mod_wsgi。如果没有安装,可以从 mod_wsgi官网 下载安装。 配置过程 步骤一:创建…

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