如何使用Python实现自动初始化软件?再也不用一个一个打开了!

前前言

GitHub原创项目: How to ?icon-default.png?t=O83Ahttps://github.com/ryan-zg/python-howto-autoinit     目前提交的代码较为简单,后续还会补充更新。

前言

        我在进行Java开发的过程中,每次打开电脑就需要启动很多软件,什么IDEAVMwareXshellNginx....等等。但是每次都要一个一个打开,打开之后就用一秒,然后就关了,启动电脑又要重新操作。这也太不方便了,所以我这里使用了python实现了简单的自动初始化。

思路

        首先想要打开几个软件,不难想到,使用os, 或者subprocess,然后中间sleep那么几秒就可以实现,非常的容易。

import subprocess
subprocess.Popen([VM_EXE, VM_DOCKER_PATH])

        实际上知道 Popen() 方法中的启动路径和项目路径两个参数就可以了,启动多个软件无非是中间加上 time.sleep(),等待软件的加载然后进行后续操作,比如打开 VMware 并启动 Linux 虚拟机后需要等待加载完成后使用 Xshell 连接。

        如果出现项目很大需要较长时间加载的情况呢?虽然可以给 sleep添加更大的值,但是似乎总不能每次换一个项目就修改源代码。

        所以,我们需要 监听,或者说需要监控软件的状态,然后根据状态进行操作。

  • 对于需要加载的,一个思路是监听日志,比如 idea每次加载项目时会输入日志,根据日志打印的状态判断项目是否加载完成。日志的位置在:主菜单--帮助--在资源管理器中打开。这里的 keyword 表示的是项目加载完成后的关键字,阅读日志后可以选择 "Finished for XXXX"
def check_log_for_completion(log_file_path, keyword):
    """检查日志文件是否包含指定的关键字"""

    # 检查文件是否存在
    if not os.path.exists(log_file_path):
        return False
    with open(log_file_path, 'r', encoding='utf-8') as log_file:
        # 循环检查日志文件的末尾部分是否包含项目加载完成的关键字
        lines = log_file.readlines()
        for line in lines:
            if keyword in line:
                return True
    return False
  • 对于需要连接的,比如 linux虚拟机,我们可以尝试使用 python进行 ssh连接,然后根据返回值判断是否连接成功。
def check_ssh_connection(host, port=22, username='root', password='123456', timeout=5):
    """尝试通过 SSH 连接到虚拟机"""
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
        ssh.connect(host, port=port, username=username, password=password, timeout=timeout)
        return True
    except (paramiko.ssh_exception.NoValidConnectionsError, paramiko.ssh_exception.SSHException, TimeoutError) as e:
        print(f"SSH 连接失败: {e}")
        return False
    finally:
        ssh.close()
  • .......

        这样我们得到了程序运行的状态,就可以不断等待需要的状态返回,然后进行下一步操作。

后续

        项目中还有很多 todo 待完成,以后会将功能完善,以及优化结构等。

        如果想要添加新的,需要启动的程序,目前来看不需要修改源代码,只需要添加就行,耦合度还不错。

        最后的话就是想将程序打包,只需要双击就可以完成甚至不需要打开编译器....

更新

  • 2024-09-08  在Xshell打开后使用图像处理识别要打开哪一个虚拟机。什么?图像处理代码看不懂!没事我也看不懂,gpt生成的,会用就行.....
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值