diff --git "a/Docs/OSAPIChecker\344\275\277\347\224\250\350\257\264\346\230\216.MD" "b/Docs/OSAPIChecker\344\275\277\347\224\250\350\257\264\346\230\216.MD" new file mode 100644 index 0000000000000000000000000000000000000000..f3420a974021febdb1577d4eb2a9d421b9f73694 --- /dev/null +++ "b/Docs/OSAPIChecker\344\275\277\347\224\250\350\257\264\346\230\216.MD" @@ -0,0 +1,59 @@ +# OSAPIChecker(主程序) + +OSAPIChecker是测试工具的主程序,将各个子模块进行汇总处理。 + +## 环境要求 +python 3.7+ +golang 1.13+ + + +## 使用方法 +1. 进入OSChecker主目录 +./OSAPIChecker.py + +2. 常用参数 +usage: OSChecker [-h] [-c CHANNEL] [-s STRATEGY] [-l LEVEL] [-t OSTYPE] [-p PKGMNGR] [-o ORGANIZE] + +optional arguments: + -h, --help show this help message and exit + -c CHANNEL, --channel CHANNEL + Choice OSAPIChecker channels: + libchecker,cmdchecker,fschecker,servicechecker,all + -s STRATEGY, --strategy STRATEGY + Choice OSAPIChecker strategy: basic,expansion,with- + expand + -l LEVEL, --level LEVEL + Choice OSAPIChecker level like: l1,l2,l3,l1l2,l1l2l3 + -t OSTYPE, --ostype OSTYPE + OSType of current OS: desktop, server + -p PKGMNGR, --pkgmngr PKGMNGR + Package Manager of current OS: apt-deb, yum-rpm + -o ORGANIZE, --organize ORGANIZE + Choice Organize + +参数解析: +-h, --help: + 显示帮助信息 +-c CHANNEL, --channel CHANNEL: + 选择要测试子模块(libchecker,cmdchecker,fschecker,servicechecker) + 默认是all--全部测试 +-s STRATEGY, --strategy STRATEGY: + 选择libchecker测试的库的类型(basic、expansion、with-expand) + 其中,with-expand是(basic+expansion) + 默认是basic +-l LEVEL, --level LEVEL: + 选择libchecker测试的级别(l1、l2、l3或者是三者组合) + 默认是l1l2 +-t OSTYPE, --ostype OSTYPE: + 选择libchecker测试的OS类型(desktop、server) + 默认是desktop +-p PKGMNGR, --pkgmngr PKGMNGR: + 选择libchecker测试的软件包类别(apt-deb、yum-rpm) + 默认是apt-deb +-o ORGANIZE, --organize ORGANIZE + 送测单位名称 + 默认是空 + +3. 注意 +1) 在进行测试时,请根据需要填写必要的参数信息 +2) 当前除libchecker外,其他子模块使用的默认配置,当前主程序不做单独配置处理(部分工具存在参数冲突), 若有需要, 请单独运行子模块程序 diff --git a/OSAPIChecker.py b/OSAPIChecker.py index cee54bd6c1c16d7f6e9b9af79636f406e64074cd..d221ed3b0dc636717089445ffd7448b7a7bf5a98 100755 --- a/OSAPIChecker.py +++ b/OSAPIChecker.py @@ -7,6 +7,7 @@ import sys import platform import logging import time +import getpass timestamp = int(time.time()) #import tkinter # for graphical user interface @@ -19,10 +20,10 @@ timestamp = int(time.time()) parser = argparse.ArgumentParser(description="This Progermm is OSChecker", prog="OSChecker") # --channel: -# cmdchecker (default) +# cmdchecker # libchecker # fschecker -parser.add_argument('-c', '--channel', action='store', type=str, help='Choice OSAPIChecker channels: libchecker,cmdchecker,fschecker', default="cmdchecker") +parser.add_argument('-c', '--channel', action='store', type=str, help='Choice OSAPIChecker channels: libchecker,cmdchecker,fschecker,servicechecker,all', default="all") # --strategy: # base (default) @@ -36,7 +37,7 @@ parser.add_argument('-s', '--strategy', action='store', type=str, help='Choice O # l3 # l1l2 (default) # l1l2l3 -parser.add_argument('-l', '--level', action='store', type=str, help='Choice OSAPIChecker level: l1,l2,l3,l1l2,l1l2l3', default="l1l2") +parser.add_argument('-l', '--level', action='store', type=str, help='Choice OSAPIChecker level like: l1,l2,l3,l1l2,l1l2l3', default="l1l2") # --ostype: # desktop @@ -55,7 +56,7 @@ parser.add_argument('-p', '--pkgmngr', action='store', type=str, help='Package M # #parser.add_argument('-j', '--stdjson', action='store', type=str, help='Choice OSAPIChecker standard json templete file', required=True) -parser.add_argument('-o', '--organize', action='store', type=str, help='Choice Organize') +parser.add_argument('-o', '--organize', action='store', type=str, help='Choice Organize', default="") # --ostype: # desktop @@ -65,6 +66,7 @@ parser.add_argument('-o', '--organize', action='store', type=str, help='Choice O args = parser.parse_args() l_file_time = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime(timestamp)) +l_arch_name = os.popen("uname -m").read().rstrip("\n") # 1. Input Valid Check def input_valid_check(): @@ -107,9 +109,8 @@ def gen_envinfo_json(): # --level [l1,l2,l3,l1l2,l1l2l3] # --ostype [desktop,server,embed] # --pkgmngr [apt-deb,yum-rpm,src-bin,other] -def checker_call_handler(): - gen_envinfo_json() - if (args.channel == "libchecker"): +def checker_call_handler(channel): + if (channel == "libchecker"): print("进入 LibChecker 处理程序 . . .") s_str = args.strategy l_str = args.level @@ -139,11 +140,9 @@ def checker_call_handler(): print ("Error: -p or --pkgmngr 参数指定错误") return 2 - os.system('python3 LibChecker/lib_checker.py --strategy=%s --level=%s --ostype=%s --pkgmngr=%s --organize=%s --timetmp=%s' %(s_str, l_str, os_str, pkg_str,org_str,l_file_time)) - #添加生成pdf工具 - #os.system() + os.system('python3 LibChecker/lib_checker.py --strategy=%s --level=%s --ostype=%s --pkgmngr=%s --organize=%s --timetmp=%s' %(s_str, l_str, os_str, pkg_str, org_str, l_file_time)) - elif (args.channel == "cmdchecker"): + elif (channel == "cmdchecker"): print("进入 CmdChecker 处理程序 . . .") os.system('python3 CmdChecker/cmd_checker.py') @@ -151,7 +150,7 @@ def checker_call_handler(): # For CmdChecker # import cmdcheck: input (json-file) (formated-json) - elif (args.channel == "fschecker"): + elif (channel == "fschecker"): print("进入 FsChecker 处理程序 . . .") os.system('python3 FsChecker/fs_checker.py') @@ -159,17 +158,22 @@ def checker_call_handler(): # For FsChecker # import fscheck: input (json-file) (formated-json) - elif (args.channel == "servicechecker"): + elif (channel == "servicechecker"): print("进入 ServiceChecker 处理程序 . . .") - os.system('python3 ServiceChecker/service_checker.py') + login_name = getpass.getuser() + if (login_name != "root"): + os.system('sudo python3 ServiceChecker/service_checker.py') + else: + os.system('python3 ServiceChecker/service_checker.py') + #os.system('sudo python3 ServiceChecker/service_checker.py') # For CmdChecker # import cmdcheck: input (json-file) (formated-json) else: - print("Invalid Options, please input --channel=[cmdchecker|fschecker|libchecker]") + print("Invalid Options, please input --channel=[cmdchecker|fschecker|libchecker|servicechecker]") # 3. Generate Output @@ -182,6 +186,18 @@ def checker_call_handler(): #def convert_json_to_pdf(): +def main_loop(): + gen_envinfo_json() + if (args.channel == "all"): + checker_call_handler("libchecker") + checker_call_handler("cmdchecker") + checker_call_handler("fschecker") + checker_call_handler("servicechecker") + else: + if ((args.channel != "libchecker") and (args.channel != "cmdchecker") and (args.channel != "fschecker") and (args.channel != "servicechecker")): + print ("Error: -c or --channel 参数指定错误") + return 2 + checker_call_handler(args.channel) # 4. Draw Graphics def draw_main_gui(): @@ -193,7 +209,8 @@ def draw_main_gui(): if __name__ == '__main__': try: input_valid_check() - checker_call_handler() + main_loop() +# checker_call_handler() # generate_json_file() # draw_main_gui() except Exception as e: