Python远程ssh登录机器检查机器信息

news2024/11/26 23:35:51

文章目录

  • Python远程ssh登录机器检查机器信息
    • check_env.sh和hosts.yaml文件如下
    • 演示

Python远程ssh登录机器检查机器信息

  • 需要在hosts.yaml文件中中输入ssh主机名,端口,用户名,密码
  • 使用python3环境,执行python3 check_env.py
  • 为了简单,这里python脚本要和hosts.yaml在同级目录下
  • 整个框架已经定义好了,想要检查其他信息只需要在display_check_result函数上扩展即可

check_env.sh和hosts.yaml文件如下

check_env.py

#!/usr/bin/python3

import paramiko    ## pip install paramiko
import yaml    ## pip install pyyaml

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

class Display:
    @staticmethod
    def green(info: str):
        return ("\033[92m" + info + "\033[0m").format()
    @staticmethod
    def red(err: str):
        return ("\033[91m" + err + "\033[0m").format()
    @staticmethod
    def yellow(warn: str):
        return ("\033[93m" + warn + "\033[0m").format()
    @staticmethod
    def blue(info: str):
        return ("\033[94m" + info + "\033[0m").format()

class Host:
    def __init__(self, host, password, port=22, username='root'):
        self.host = host
        self.port = port
        self.username = username
        self.password = password
    def get_password(self):
        return self.password
    def get_host(self):
        return self.host
    def get_username(self):
        return self.username
    def get_port(self):
        return self.port
def diskusage(ssh: paramiko.SSHClient):
    _, stdout, _ = ssh.exec_command('lsblk')
    result = stdout.read().decode()
    return result
def memory_usage(ssh: paramiko.SSHClient):
    _, stdout, _ = ssh.exec_command('free -h')
    result = stdout.read().decode()
    return result
def hostname_info(ssh: paramiko.SSHClient):
    _, stdout, _ = ssh.exec_command('hostname -f')
    result = stdout.read().decode()
    return result
def ip_info(ssh: paramiko.SSHClient):
    _, stdout, _ = ssh.exec_command('hostname -i')
    result = stdout.read().decode()
    return result
def os_info(ssh:paramiko.SSHClient):
    _, stdout, _ = ssh.exec_command('cat /etc/redhat-release')
    result = stdout.read().decode()
    return result

def display_check_result():
    print(Display.green('Environment Statistics'))
    print()
    ## print disk info
    print("======== " + Display.blue('Disk Info: ') +"========")
    print(diskusage(ssh_client))
    ## print memory info
    print("======== " + Display.blue('Memory Info: ') + "========")
    print(memory_usage(ssh_client))
    ## print hostname info
    print(Display.green('Hostname: ') + hostname_info(ssh_client))
    ## print ip
    print(Display.green('IP: ') + ip_info(ssh_client))
    ## os info
    print(Display.green('OS: ') + os_info(ssh_client))

def read_yaml(file_path):
    with open(file_path, 'r', encoding='utf8') as f:
        hosts = yaml.safe_load(f)
        return hosts
host_list = []
def construct_hosts():
    hosts = read_yaml('./hosts.yaml')
    for h in hosts:
        host = Host(h.get('host'), h.get('password'), h.get('port'), h.get('username'))
        host_list.append(host)       

ssh_client.connect
if __name__ == "__main__":
    construct_hosts()
    for host in host_list:
        try:
            ssh_client.connect(host.host, host.port, host.username, host.password)
            print("SSH connect to {} successfuly!", host.get_host())
            display_check_result()
        except Exception as e:
            print("SSH connect to {} failed: {}".format(host.get_host(), e))
        finally:
            ssh_client.close()

hosts.yaml

### yaml定义样式如下:
# - host: 192.168.0.33
#   port: 22
#   username: root
#   password: xwp12345
#
# - host: 192.168.0.34
#   port: 22
#   username: xwp
#   password: xwphs123

- host: 192.168.0.33
  port: 22
  username: xwp
  password: xwphs123

演示

在这里插入图片描述

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

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

相关文章

兼容性测试的正确打开方式

前几天在我创建的技术交流群,几位同学聊起了兼容性测试相关的话题。有测试的方法技巧,有如何选择测试时的切入点,也有在质量和投入成本之间如何做平衡的思考。 翻了翻写过的技术文章,大多集中在后端、中间件以及稳定性测试方面&a…

评估软件缺陷优先级的6个维度

我们在软件开发中,团队往往面临多个任务,尤其是缺陷任务,如果不对缺陷任务进行优先级排序,按部就班地解决缺陷,那么一旦严重缺陷不能及时解决,往往会对项目造成较大影响,甚至直接影响项目进度。…

处理器方法的参数与返回值

文章目录 前言案例 前言 提示:这里可以添加本文要记录的大概内容: 可以简化代码的重复性和冗长性 提示:以下是本篇文章正文内容,下面案例可供参考 案例 新建controller类代码: Controller public class Parameter…

高忆管理:1800亿投资大佬投降,被散户所逼?美联储释放重磅信号

美国散户“逼疯”华尔街传奇大佬。 美国散户投资者又掀起了一场“逼空”大战。当地时刻8月6日,彭博社报导,华尔街对冲基金传奇人物Dan Loeb在一份信函中清晰向客户标明,他作为做空个股“大赌徒”的日子现已完毕了。当时美股商场的卖空环境“比…

LVS—DR集群的搭建

lvs-dr模式工作原理: 首先,来自客户端计算机CIP的请求被发送到Director的VIP。其次Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机&am…

有没有必要换cspm?未来的发展前景如何?

最近 CSPM 证书很热门,CSPM 相关问题大家都很关心,今天本橘座就给大家全面解答一下 CSPM到底是何方神圣? 文章主要是解答下面几个常见问题,其他问题可以留言或者私信咨询我哦~ 一、什么是 CSPM证书?跟PMP是什么关系&a…

1.Mysql允许远程连接访问

打开编辑器,输入以下sql语句 use mysql; select * from user; update user set Host % where Host localhost and Userroot;

【Ubuntu】安装docker,docker compose 以及部署一个docker应用

大家好!在过去,已经分享了很多有关通过Docker部署应用的内容。今天,我将为大家详细介绍如何在Ubuntu系统上部署最新的Docker平台。 Docker是什么 Docker是一个开源的容器化平台,它允许您将应用程序及其所有依赖项打包到称为容器…

【小程序】Canvas 画布分享海报

成品效果图 可以通过切换下面图片形成不同的海报背景分享图 <template><view>// type"2d"必须加<canvas type"2d" :style"{width:Artwidth px,height:Artheight px, margin:0 auto}" canvas-id"firstCanvas"id&quo…

微前端初识

文章目录 微前端的发展历史微前端的定义微前端的特点使用微前端面临的挑战微前端常用技术方案及优缺点路由分发式微前端iframesingle-spaqiankunwebpack5: module federationWeb Component 微前端的发展历史 微前端在2016年首次出现在TWTR&#xff08;ThoughtWorks Technology…

准确预测极端降水,哥伦比亚大学推出升级版神经网络 Org-NN

内容一览&#xff1a;随着环境变化加剧&#xff0c;近年来全球极端天气现象频频出现&#xff0c;准确预测降水强度对人类以及自然环境都十分重要。传统模型预测降水的方差较小&#xff0c;偏向小雨&#xff0c;对极端降水预测不足。 关键词&#xff1a;极端天气 内隐学习 神经网…

ABAQUS启动GPU加速计算

文章目录 系统说明CUDA安装安装cuDNNABAQUS设置Lamb波压电仿真 系统说明 基于笔记本电脑&#xff0c;RTX4060&#xff0c;win11系统。 ABAQUS的有限元求解器是基于CPU的&#xff0c;但是它也支持使用GPU进行加速计算。仅支持隐式求解器standard。显示求解器explicit不能用。 …

opencv基础46-图像金字塔02-拉普拉斯金字塔

前面我们介绍了高斯金字塔&#xff0c;高斯金字塔是通过对一幅图像一系列的向下采样所产生的。有时&#xff0c;我们希望通过对金字塔中的小图像进行向上采样以获取完整的大尺寸高分辨率图像&#xff0c;这时就需要用到拉普拉斯金字塔 前面我们已经介绍过&#xff0c;一幅图像在…

PyTorch深度学习环境安装(Anaconda、CUDA、cuDNN)及关联PyCharm

1. 关系讲解 Tytorch&#xff1a;Python机器学习库&#xff0c;基于Torch&#xff0c;用于自然语言处理等应用程序 Anaconda&#xff1a;是默认的python包和环境管理工具&#xff0c;安装了anaconda&#xff0c;就默认安装了conda CUDA&#xff1a;CUDA是一种由显卡厂商NVIDI…

算法通关村第五关——HashMap和队列问题分析

1.HashMap 1.1Hash的概念和基本特征 哈希(Hash)&#xff1a;也称为散列。就是把任意长度的输入&#xff0c;通过散列算法&#xff0c;变换成固定长度的输出&#xff0c;这个输出值就是散列值。 假设数组array存放的是1到15这些数&#xff0c;现在要存在一个大小是7的Hash表中…

Asynq: 基于Redis实现的Go生态分布式任务队列和异步处理库

Asynq[1]是一个Go实现的分布式任务队列和异步处理库&#xff0c;基于redis&#xff0c;类似Ruby的sidekiq[2]和Python的celery[3]。Go生态类似的还有machinery[4]和goworker 同时提供一个WebUI asynqmon[5]&#xff0c;可以源码形式安装或使用Docker image, 还可以和Prometheus…

【数据结构与算法——TypeScript】哈希表

【数据结构与算法——TypeScript】 哈希表(HashTable) 哈希表介绍和特性 哈希表是一种非常重要的数据结构&#xff0c;但是很多学习编程的人一直搞不懂哈希表到底是如何实现的。 在这一章节中&#xff0c;我门就一点点来实现一个自己的哈希表。通过实现来理解哈希表背后的原理…

oracle容灾备份怎么样Oracle容灾备份

随着科学技术的发展和业务的增长&#xff0c;数据安全问题越来越突出。为了保证数据的完整性、易用性和保密性&#xff0c;公司需要采取一系列措施来防止内容丢失的风险。  Oracle是一个关系数据库管理系统(RDBMS),OracleCorporation是由美国软件公司开发和维护的。该系统功能…

构建Docker容器监控系统(cadvisor+influxDB+grafana)

目录 一、部署 1、安装docker-cd 2、阿里云镜像加速 3、下载组件镜像 4、创建自定义网络 5、创建influxdb容器 6、创建Cadvisor 容器 7、创建granafa容器 一、部署 1、安装docker-cd [rootlocalhost ~]# iptables -F [rootlocalhost ~]# setenforce 0 setenforce: SELi…

22款奔驰GLC260加装原厂香氛负离子系统,清香宜人,久闻不腻

奔驰原厂香氛合理性可通过车内空气调节组件营造芳香四溢的怡人氛围。通过更换手套箱内香氛喷雾发生器所用的香水瓶&#xff0c;可轻松选择其他香氛。香氛的浓度和持续时间可调。淡雅的香氛缓缓喷出&#xff0c;并且在关闭后能够立刻散去。车内气味不会永久改变&#xff0c;香氛…