首页 > 系统相关 >python远程监控linux进程

python远程监控linux进程

时间:2023-03-31 13:33:54浏览次数:38  
标签:arr python cfg str linux print 033 data 远程

1、效果图

 

 

2、配置文件

 

 

3、源码

import paramiko
import io
import colorama

def process(cfg):
    # 创建SSH客户端
    ssh = paramiko.SSHClient()
    # 自动接受新的主机密钥
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接到远程Linux服务器
    ssh.connect(hostname=cfg['hostname'], username=cfg['username'], password=cfg['password'])
    # 执行Linux命令,获取进程状态信息
    process_list=cfg['process']
    str_disc=''
    for i in process_list:
        str_disc = str_disc + i.replace('[', '').replace(']', '')  # 去除[]符号
    if ',' in str_disc:  # 以逗号为分隔符
        arr = str_disc.split(',')
        #print("arr is", arr)

    for i in arr:
        stdin, stdout, stderr = ssh.exec_command(f'ps aux | grep {i}')
        result = stdout.readlines()
        if i=='进程名':
            if len(result) > 10:
                print(f"\033[0;32m  {i}  is running\033[0m")
            else:
                print(f"\033[0;31m  {i}  is stop\033[0m")
        else:
            if len(result) > 1:
                print(f"\033[0;32m  {i}  is running\033[0m")
            else:
                print(f"\033[0;31m  {i}  is stop\033[0m")

        print(f"\033[0;36m  {i} process info:\033[0m")
        for j in result:
            j=str(j).replace('\n','')
            print("  ",j)
        print("***************************************")
    # 关闭SSH连接
    ssh.close()
def load_config():# 读取配置文件
    pathfile = 'conf.txt' # 文件存放位置,自行修改
    f = io.open(str(pathfile), "r")
    data = str(f.read())
    f.close()
    dict = {}
    str_data = ''
    for i in data:
        str_data = str_data + i.strip('\n')  # 去除换行符
        if ';' in str_data:  # 分号表示得到一个完整的数据,以这个数据为一个完整的整体进行切割
            str_data = str_data[:-1]  # 去除分号
            arr = str_data.split('==')  # 以==为分隔符切割数据
            dict[arr[0]] = arr[1]  # 按字典存储
            str_data = ''  # 重置变量用于下一个数据的切割
    #print(dict)
    return dict
if __name__ == '__main__':
    colorama.init(autoreset=True)
    while True:
        cfg = load_config()  # 读取配置文件
        process(cfg)  # 执行监控
        end_flag = input("enter any key to continue:\n")

  

标签:arr,python,cfg,str,linux,print,033,data,远程
From: https://www.cnblogs.com/yan-test/p/17276000.html

相关文章

  • 如何基于MLServer构建Python机器学习服务
    文章目录前言一、数据集二、训练Scikit-learn模型三、基于MLSever构建Scikit-learn服务四、测试模型五、训练XGBoost模型六、服务多个模型七、测试多个模型的准确性总结参考前言在过去我们训练模型,往往通过编写flask代码或者容器化我们的模型并在docker中运行。这篇文章中,我们......
  • Python 应用 - jieba 分词 1:进行批量文本分词_艽野尘梦 better 的博客 - CSDN 博客
    知识点小结os.walk()os.walk()方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。os.walk()方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。importpandasaspdimportmatplotlib.pyplotaspltimportjiebafromPILimp......
  • linux常用命令
    针对linux发行版(如ubuntu、raspian等)的基础使用说明,以快速熟悉linux发行版的操作。一、系统信息查看处理器架构:arch查看内核版本:cat/proc/version;uname-a查看操作系统版本:head-n1/etc/issue查看内存使用:free查看磁盘使用:df-m查看环境变量:env查看CPU信息:cat/proc/cpuinfo......
  • linux文件权限解读
    Linux文件权限文件权限和文件类型共有10个字符组成,这10个字符可以分成三部分\[d+rwx+rwx+rw-\\d:表示文件类型\\2-4位(第一组rwx):表示文件所有者的对文件的权限\\5-7位(第二组rwx):表示文件所有者所在组的用户对文件的权限\\8-10位(rw-):表示其他用户对文件的权限\]其中r表示可读,w......
  • php站点导入大mysql文件(linux系统)
    问题描述:站点数据多,mysql导出后大于1G,使用phpmyadmin,导入一半报错,白白浪费等待时间,使用navicat导入,执行时间过长提示错误解决思路:1.拆分mysql文件,分批次导入,亲测还是比较花费时间,小于100M可以尝试,大于100M不推荐2.推荐使用进入linux系统导入mysql,步骤如下:2.1:把导出的.sql大文......
  • linux 分区挂载02
    创建步骤pvcreate/dev/vdbvgcreatevgopt/dev/vdblvcreate-L400G-nlvoptvgoptlvcreate-L50G-nlvoptlogvgoptmkfs.ext4/dev/vgopt/lvoptmkfs.ext4/dev/vgopt/lvoptlogmount/dev/vgopt/lvopt/optmount/dev/vgopt/lvoptlog/opt/log挂载完成后,需要写入/e......
  • Ubuntu系统python3.9.0安装dlib库的经历
    1.直接condainstalldlib或者是pipinstalldlib库,结果失败。2.根据一些搜索的内容提示先安装dlib依赖的库,再installdlib结果:安装了cmake,再执行dlib安装命令依然失败3.直接去dlib官网下载,dlib代码库,根据其他博客的提示下,编译,执行setup.py安装。结果:表面上成功,在python......
  • 如何方便的给你的python函数进行参数类型检查
    python有时候很麻烦的一点,为了运算速度,不给你做类型检查。这个特性被各路大佬当成重载的秘宝,但是有时候对工程性的项目来说并不安全。这里介绍一个notice工具,会对函数形参标注类型和实参类型不一样时进行输出提醒(不报错,不影响运行)1fromtypingimportget_type_hints2from......
  • Python: utilities
     decimal_to_binarydefdecimal_to_binary(v:float,precison:int=6)->str:ifv==0:return'0b0'binary=''integral=int(v)#integralpartmantissa=v-integral#fractionalpart#conver......
  • Linux操作--8
    日志日志文件常存放在/var/log/文件下系统常用日志文件配置日志管理文件日志轮替内存日志......