主机电源相关测试脚本:ping通 - 停止唤醒

news2024/12/23 12:40:51

简介:在进行一些涉及服务器或者PC主机的电源关机、开机、重启相关的测试中,远程开机或者唤醒,结合pythonping模块处理ping,可以节省出不必要的硬性等待时间,规避开机时间不稳定的情况,而且不会造成堵塞现象,易于提取。现提供一次性脚本给予各位看官参考。

历史攻略:

Python:用pythonping处理ping

测试网络连接:ping和telnet

gping:升级版ping可视化工具

远程开机:wakeonlan

IPMI开源库pyghmi基本使用

设计思路:

1、初始化为开机状态,支持唤醒或者远程开机

2、设置循环次数,循环开始

3、进行每一轮的指定测试内容

4、关机 或者 重启

5、设置必要的基础等待时间。为保护设备健康,强烈建议等待20 - 30秒

6、开机或者等待开机

7、ping目标主机,如果ping不通则等待10秒(可变),重复执行步骤6。

8、如果ping通,退出唤醒或者相关远程操作

9、重复执行 步骤 2 - 8

案例源码:

# -*- coding: utf-8 -*-
# time: 2024/4/15 21:38
# file: ping_demo.py
# 公众号: 玩转测试开发

import time
import subprocess
from pythonping import ping


def sub(command, timeout=360):
    print(f"{command}")
    popen = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                             universal_newlines=True, bufsize=1)
    out, err = popen.communicate(timeout=timeout)
    message = out + err
    print(f"{message}")
    popen.kill()
    time.sleep(0.1)
    return popen, message


def check_online(ip):
    message = ping(ip)
    print(message)

    success_ping = "Reply"

    if success_ping in str(message):
        print(f"Ping to {ip} success.")
        online_result = True

    else:
        print(f"Ping to {ip} fail.")
        online_result = False

    return online_result


def run(count):
    # init
    print("do the init things.")

    for each_run in range(1, count + 1):
        print(f"The cycle {each_run} start")
        print("testing for something.")

        # shutdown or reboot
        # shell_command = "sudo shutdown -P now"
        # sub(f'ssh admin@10.11.12.13 "{shell_command}"')

        time.sleep(30)

        # shell_command = "wakeonlan 01:02:03:04:05:06"
        # sub(f'ssh admin@10.11.12.13 "{shell_command}"')

        target_ip = "10.11.12.13"
        wake_time_summary = 0
        while True:

            target_result = check_online(target_ip)
            if target_result:
                break
            else:
                time.sleep(10)
                wake_time_summary += 10

                # shell_command = "wakeonlan 01:02:03:04:05:06"
                # sub(f'ssh admin@10.11.12.13 "{shell_command}"')

        print(f"wake_time_summary:{wake_time_summary}")

        print(f"The cycle {each_run} finish.")


if __name__ == '__main__':
    count = 2
    run(count)

运行结果:

图片

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

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

相关文章

(一)Dataframes安装与类型 #Julia数据分析 #CDA学习打卡

目录 一. Julia简介 二. Dataframe构造方法 1)访问列的方式 (a)判断严格相等 i. 切片严格相等是true ii. 复制严格相等是false (b)判断相等 i. 切片相等是true ii. 复制相等是true 2)获取列名称 …

LORA详解

参考论文: low rank adaption of llm 背景介绍: 自然语言处理的一个重要范式包括对一般领域数据的大规模预训练和对特定任务或领域的适应处理。在自然语言处理中的许多应用依赖于将一个大规模的预训练语言模型适配到多个下游应用上。这种适配通常是通过…

unity学习(91)——云服务器调试——补充catch和if判断

本机局域网没问题,服务器放入云服务器后,会出现异常。 想要找到上面的问题,最简单的方法就是在云服务器上下载一个vs2022! 应该不是大小端的问题! 修改一下readMessage的内容,可以直接粘贴到云服务器的。 …

【Python系列】字符串操作

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

PostgreSQL的学习心得和知识总结(一百三十九)|深入理解PostgreSQL数据库GUC参数 allow_alter_system 的使用和原理

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

K8s: 部署 kubernetes dashboard

部署 Dashboard K8s 官方有一个项目叫 dashboard,通过这个项目更方便监控集群的状态 官方地址: https://github.com/kubernetes/dashboard 通常我们通过命令行 $ kubectl get po -n kube-system 能够查看到集群所有的组件,但这样的方式比较不太直观 …

力扣爆刷第127天之动态规划五连刷(整数拆分、一和零、背包)

力扣爆刷第127天之动态规划五连刷(整数拆分、一和零、背包) 文章目录 力扣爆刷第127天之动态规划五连刷(整数拆分、一和零、背包)关于0 1 背包问题的总结01背包遍历顺序:完全背包遍历顺序: 一、343. 整数拆…

探讨mfc100u.dll丢失的解决方法,修复mfc100u.dll有效方法解析

mfc100u.dll丢失是一个比较常见的情况,由于你电脑的各种操作,是有可能引起dll文件的缺失的,而mfc100u.dll就是其中的一个重要的dll文件,它的确实严重的话是会导致程序打不开,系统错误的。今天我们就来给大家科普一下mf…

明天报名!!济宁教师招聘报名照片及常见问题

明天报名!!济宁教师招聘报名照片及常见问题 山东济宁教师招聘1000多人 报名时间: 2024年4月25日9:00-4月28日16:00 缴费时间: 2024年4月25日11:00-4月30日16:00 打印准考证:2024年5月23日9:00-5月26日9:30 初审时间: 2024年4月25日11:00-4月29日16:00 查询时间: 2024年4月…

c++初阶——类和对象(中)

大家好,我是小锋,我们今天继续来学习类和对象。 类的6个默认成员函数 我们想一想如果一个类什么都没有那它就是一个空类,但是空类真的什么都没有吗? 其实并不是,任何类在什么都不写时,编译器会自动生成以…

JCE cannot authenticate the provider BC

前言: 公司项目有用AES加密的,报错原因是BC(Bouncy Castle)提供的加密服务时,JCE(Java Cryptography Extension)无法进行验证。这通常是由于 JCE 的默认策略文件不支持所需的加密算法&#xff…

北京车展“第一枪”:长安汽车发布全球首款量产可变新汽车

4月25日,万众瞩目的2024北京国际汽车展览会在中国国际展览中心如期而至。作为中国乃至全球汽车行业的盛宴,本次车展也吸引了无数业内人士的高度关注。 此次北京车展以“新时代 新汽车”为主题,汇聚了1500余家主流车企及零部件制造商&#xff…

最优化理论探析:函数优化与组合优化,约束优化与无约束优化的交织与应用

最优化理论作为运筹学、数学规划和工程科学中的核心研究领域,涵盖了函数优化、组合优化、约束优化和无约束优化等多个分支。这些理论在解决实际问题中发挥着重要作用,从资源分配、生产调度到网络路由、物流优化,再到机器学习、人工智能等领域…

DevOps(十四)怎么实现Gitlab更新后Jenkins自动发布

目录 1、在 Jenkins 中安装 GitLab 插件 2、在 GitLab 中创建一个访问令牌(Access Token) 3、在 Jenkins 中配置 GitLab 连接 4、在 Jenkins 中创建一个新的任务(Job) 5、在 GitLab 中配置 Webhook 6、以下是一些补充说明和建议 持续集成的一个特点就是开发可以随时提交&…

SRE运维和DevOps之间是什么关系?

一、SRE运维和DevOps之间是什么关系? SRE运维和DevOps之间存在紧密的联系和相互依赖。 首先,两者都是开发运维一体化时代的产物,旨在通过协同工作来构建高效可靠的软件运维团队。SRE(Site Reliability Engineering&#x…

【UE5.1 C++】提升编译速度

步骤 1. 在“C:\Users\用户\AppData\Roaming\Unreal Engine\UnrealBuildTool”目录下找到“BuildConfiguration.xml”文件 打开“BuildConfiguration.xml”&#xff0c;添加如下部分内容 <?xml version"1.0" encoding"utf-8" ?> <Configuratio…

FastGPT编译前端界面,并将前端界面映射到Docker容器中

建议在linux系统下编译 1、克隆代码 git clone https://github.com/labring/FastGPT 2、进入FastGPT目录&#xff0c;执行 npm install 3、进入projects/app目录&#xff0c;执行 npm run dev 此时会自动下载依赖包&#xff0c;这里如果执行npm install的话&#xff0c;…

OS复习笔记ch4

引言 上一章&#xff0c;我们学习了进程的相关概念和知识&#xff0c;不知道小伙伴们的学习进度如何&#xff0c;没看的小伙伴记得去专栏看完哦。 线程从何而来 我们之前说过&#xff0c;进程是对程序运行过程的抽象&#xff0c;它的抽象程度是比较高的。 一个进程往往对应一…

LabVIEW专栏九、类的应用

一、类的应用 接上一章"类" 类在项目中&#xff0c;一般会在类的私有成员簇内&#xff0c;包含一个数据类型为参数类的队列。 例如网口类&#xff0c;里面实际会包含很多信息&#xff0c;有IP地址和端口等等参数。这些参数如果不放在队列引用中缓存下来&#xff0c;…

【热门前端【vue框架】】——vue框架和node.js的下载和安装保姆式教程

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;程序员-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…