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

180 阅读2分钟

前前言

Github原创项目:How to ?
目前提交的代码较为简单,后续还会补充更新。

前言

我在进行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()
  • ...... 这样我们得到了程序运行的状态,就可以不断等待需要的状态返回,然后进行下一步操作。

后续

文章也发布在CSDN, 链接地址
更多对于该项目由新的主意会继续更新...

更新

  • 2024-09-08 打开Xshell后使用图像处理来选择要打开哪一个虚拟机