Python Argparse模块学习

admin 2022年5月17日03:41:44安全博客 安全开发评论6 views3167字阅读10分33秒阅读模式

Python Argparse模块学习

2016-03-28


最近是打算写个好用的webdirscan,毕竟现成的没找到几个好用的

所以发挥麒麟臂,自己写一套适合自己以及自己喜欢的web目录扫描工具,

也就当是巩固Python基础的一个过程。

前言

首先考虑到要做webdirscan就必须传入主机、字典、脚本语言等,所以就涉及到了命令行传入参数的问题,于是看了看其他的脚本都是如何接收参数,调用参数,我这里看的是lijiejie的子域名爆破工具,里面import了argparse模块,所以就去官方找了文档,这里对文档进行简单的翻译和理解。

没有接收参数(–help除外)

#!/usr/bin/env python
# coding:utf-8

import argparse

parse = argparse.ArgumentParser()
args = parse.parse_args()

接收必须参数

简单接收一个参数

举个栗子,接收一个host参数并输出:

#!/usr/bin/env python
# coding:utf-8

import argparse

parse = argparse.ArgumentParser()
parse.add_argument('host')
args = parse.parse_args()

print args.host

结果如下:

striker@Striker-Ubuntu:~/Desktop/PythonStudy$ ./argparseStudy.py www.hackersb.cn
www.hackersb.cn

如果没有带参数,则返回:

striker@Striker-Ubuntu:~/Desktop/PythonStudy$ ./argparseStudy.py 
usage: argparseStudy.py [-h] host
argparseStudy.py: error: too few arguments

给接收的参数添加帮助文字

举个例子,给上文的host添加帮助文字:

#!/usr/bin/env python
# coding:utf-8

import argparse

parse = argparse.ArgumentParser()
parse.add_argument('host',help="This is host for scan.")
args = parse.parse_args()

print args.host

这个时候执行argparseStudy.py -h会返回:

[email protected]:~/Desktop/PythonStudy$ ./argparseStudy.py -h
usage: argparseStudy.py [-h] host

positional arguments:
  host        This is host for scan.

optional arguments:
  -h, --help  show this help message and exit

设置接收参数的类型

这里以int型为例,当然也有string类型,这里还支持什么类型,我不知道.. 反正常用的就int和string吧…

#!/usr/bin/env python
# coding:utf-8

import argparse

parse = argparse.ArgumentParser()
parse.add_argument('host',help="This is host for scan.",type=int)
args = parse.parse_args()

print args.host

以下是我输入string类型和int类型的返回结果:

[email protected]:~/Desktop/PythonStudy$ ./argparseStudy.py aaa
usage: argparseStudy.py [-h] host
argparseStudy.py: error: argument host: invalid int value: 'aaa'
[email protected]:~/Desktop/PythonStudy$ ./argparseStudy.py 123
123

输入aaa的时候因为不是int型,所以报错~

接收可选参数

接收需要传值的可选参数

比如做webdirscan需要输入文件后缀,如:php、jsp、aspx、asp,但这个参数是可选的:

#!/usr/bin/env python
# coding:utf-8

import argparse

parse = argparse.ArgumentParser()
parse.add_argument('--suffix',help="This is suffix on scan file")
args = parse.parse_args()

if args.suffix:
    print args.suffix

以下是我可选参数的传入方式、并且不传该参数也不会报错~ 毕竟是可选参数:

[email protected]:~/Desktop/PythonStudy$ ./argparseStudy.py --suffix php
php
[email protected]:~/Desktop/PythonStudy$ ./argparseStudy.py

接收无需传值的可选参数

比如我们做webdirscan的时候,如果传入--thread就启用多线程,不传入则单线程:

#!/usr/bin/env python
# coding:utf-8

import argparse

parse = argparse.ArgumentParser()
parse.add_argument('--thread',help="open the more thread",action="store_true")
args = parse.parse_args()


if args.thread:
print ‘more thread!’

返回结果如下,如果我带上--thread则输出多线程:

[email protected]:~/Desktop/PythonStudy$ ./argparseStudy.py
[email protected]:~/Desktop/PythonStudy$ ./argparseStudy.py --thread
more thread!

短配置

缩短我们的参数,很多程序中都用单个字母代替,比如nmap的-port简写为-p,我们也可以这样:

#!/usr/bin/env python
# coding:utf-8

import argparse

parse = argparse.ArgumentParser()
parse.add_argument('-t','--thread',help="open the more thread",action="store_true")
args = parse.parse_args()


if args.thread:
print ‘more thread!’

运行结果如下:

[email protected]:~/Desktop/PythonStudy$ ./argparseStudy.py
[email protected]:~/Desktop/PythonStudy$ ./argparseStudy.py -t
more thread!

大概就学习到这里,基本上常用的已经介绍了,其他少用的可以去看官方文档

参考

FROM : hackersb | Author:王松

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月17日03:41:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  Python Argparse模块学习 http://cn-sec.com/archives/1012867.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: