我在python中写了一段代码,它利用argparse模块使其更容易使用。
我可以添加标志形式的参数,如:
parser.add_argument('-u', '--url', dest='url', help='type in url')
但就像在gobuster中一样,当你使用帮助标志(-h(时,你可以看到你也可以传递命令,比如dir、fuzz等。他们每个人都有单独的帮助标志,比如
gobuster dir --help
如何做到这一点?我可以通过以下方式制作无参数的标志:
parser.add_argument('R', action='store_true', help='allow recursion')
简而言之,我正试图找出如何分别定义命令,以便它们也显示在帮助部分的命令下,而不是可选参数之下。我还试图了解如何为每个命令创建一个单独的帮助部分。
可以通过具有单独帮助消息和父参数的子分析器添加它。
arg_parser.add_argument('--version', action='version', version='%(prog)s 1.0')
subparsers = arg_parser.add_subparsers(title='subcommands',dest='subcommandsarg',help='Program parser for subcommands')
parser1 = argparse.ArgumentParser(add_help=False)
parser1.add_argument('-a','--arg1', dest='module',required=False,help='Mod Name' ,default='all')
subparsers.add_parser('parser1',parents=[parser1],help="Help text for parser1")
parser2 = argparse.ArgumentParser(add_help=False)
parser2.add_argument('-b','--arg2', dest='module',required=False,help='Mod Name' ,default='all')
subparsers.add_parser('parser2',parents=[parser2],help="Gets the configuration of mods")
options = arg_parser.parse_args()
输出
#python test.py -h
usage: program [-h] [--version] {parser1,parser2} ...
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
subcommands:
{parser1,parser2} Program parser for subcommands
parser1 Help text for parser1
parser2 Gets the configuration of mods
#python test.py parser1 -h
usage: program parser1 [-h] [-a MODULE]
optional arguments:
-h, --help show this help message and exit
-a MODULE, --arg1 MODULE
Mod Name
#python test.py parser2 -h
usage: program parser2 [-h] [-b MODULE]
optional arguments:
-h, --help show this help message and exit
-b MODULE, --arg2 MODULE
Mod Name