编写安全或其他脚本工具时,需要终端执行一些参数,保证可靠以及规范,可采用docopt进行实现,对于干扰参数或错误输入进行过滤和报错。实现较为完美的控制台参数控制。

docopt实现样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from docopt import docopt

def main():
USAGES = """xxxxxx POC.

Usage:
xxxxxx.py (--flow-num=<flownum> | --file-size=<file_size> [--unit=<unit>]) [--file-path=<filepath>] [--log-level=<log_level>]
xxxxxx.py (-h | --help)
xxxxxx.py --version

Example:
xxxxxx.py --flow-num=1000 # 生成1000xxxxxx
xxxxxx.py --file-size=50 --unit=MB # 生成50M xxxxxx文件

Options:
-h --help 显示帮助信息
--version 显示版本
--flow-num=<flownum> 生成xxxxxx
--file-size=<file_size> 生成xxxxxx大小,需要搭配--unit指定单位
--unit=<unit> 生成xxxxxx大小单位默认MB/M [default: MB]
--file-path=<filepath> 生成的xxxxxx路径
--log-level=<entity_type> 记录xxxxxx日志级别 [DEBUG|INFO|WARNING|ERROR|CRITICAL] [default: INFO]
"""
arguments = docopt(USAGES, options_first=True, version="xxxxxx 1.0")

flow_num = arguments.get('--flow-num')
file_size = arguments.get('--file-size')
unit = arguments.get('--unit')
file_path = arguments.get('--file-path')
log_level = arguments.get('--log-level')


if __name__ == '__main__':
main()