diff --git a/libs/locallibs/get_test_device.py b/libs/locallibs/get_test_device.py index 01fc4942a0845b47a15247c13204af85a83bcbbc..fe39f593a4c11d8bd289e2339e958228036b4277 100644 --- a/libs/locallibs/get_test_device.py +++ b/libs/locallibs/get_test_device.py @@ -38,13 +38,15 @@ def get_test_nic(node=1): Returns: [str]: 网卡名 """ - exitcode, tmpfile = rpm_manage.rpm_install(pkgs="lshw", node=node) - if exitcode != 0: - mugen_log.logging( - "error", - "Failed to install the dependent software package required to obtain the network card.", - ) - sys.exit(exitcode) + tmpfile = None + if not rpm_manage.rpm_check(node=node, pkgs="lshw"): + exitcode, tmpfile = rpm_manage.rpm_install(pkgs="lshw", node=node) + if exitcode != 0: + mugen_log.logging( + "error", + "Failed to install the dependent software package required to obtain the network card.", + ) + sys.exit(exitcode) if os.environ.get("NODE" + str(node) + "_LOCALTION") == "local": dev_info = subprocess.getoutput("cat /proc/device-tree/model") diff --git a/libs/locallibs/rpm_manage.py b/libs/locallibs/rpm_manage.py index d519694b765ba6f4e7b4502fe4312bb4e75309ca..28d59ca2b4679dd6daec1139ea44a7703803fada 100644 --- a/libs/locallibs/rpm_manage.py +++ b/libs/locallibs/rpm_manage.py @@ -168,6 +168,37 @@ def rpm_remove(node=1, pkgs="", tmpfile=""): ssh_cmd.pssh_close(conn) return exitcode +def rpm_check(node=1, pkgs=""): + """检测软件包是否安装 + + Args: + pkgs ([str]): 软包包名,"bc" or "bc vim" + node (int, optional): 节点号. Defaults to 1. + + Returns: + [boolean]: 是否安装 + """ + if pkgs == "": + mugen_log.logging("error", "the following arguments are required:pkgs") + sys.exit(1) + + localtion = os.environ.get("NODE" + str(node) + "_LOCALTION") + if localtion == "local": + conn = None + func = local_cmd + else: + conn = ssh_cmd.pssh_conn( + os.environ.get("NODE" + str(node) + "_IPV4"), + os.environ.get("NODE" + str(node) + "_PASSWORD"), + os.environ.get("NODE" + str(node) + "_SSH_PORT"), + os.environ.get("NODE" + str(node) + "_USER"), + ) + func = ssh_cmd.pssh_cmd + + exitcode = func(conn=conn, cmd="which " + pkgs)[0] + if localtion != "local": + ssh_cmd.pssh_close(conn) + return exitcode == 0 if __name__ == "__main__":