命令行参数传递

python main.py -H 192.168.1.1 -p 22,23,24

#coding:utf-8
import optparse def PortScan(host,port):
print("针对主机",host,"扫描结束了...")
def main():
Usage = "[*] Usage : main.py -H <host> -p <port>"
parser = optparse.OptionParser(Usage)
parser.add_option('-H', dest='Host', type='string', help='specify target host')
parser.add_option('-p', dest='Port', type='string', help='specify target port[s]')
(options, args) = parser.parse_args()
Host = options.Host
Port = str(options.Port).split(',')
if (Host != "None" and Port[0] != "None"):
print("针对主机{} 执行端口{} 开始扫描...".format(Host,Port))
PortScan(Host,Port)
else:
parser.print_help() if __name__ == "__main__":
main()

下面这一种适合一个命令参数干多件事.python main.py -a Query 192.168.1.1 192.168.1.2

#coding:utf-8
import optparse
def main():
Usage = "[*] Usage : main.py -a cmd <host1> <host2>"
parser=optparse.OptionParser(Usage)
parser.add_option('-a',dest="QueryHost",help="查询主机情况.")
(options,args)=parser.parse_args()
if options.QueryHost:
argc = options.QueryHost
QueryHost(argc,args)
else:
parser.print_help() def QueryHost(argc,args):
print("传递参数1:{},传递参数2:{}".format(argc,args))
if(argc == "query"):
for i in range(len(args)):
print(args[i])
elif(argc == "add"):
print("增加主机{}".format(args)) if __name__ == '__main__':
main()

我们还可以编写一个交互式的Shell环境,这样能更加灵活的操作命令,操作方式 [shell] # ls

# coding:utf-8
import os
def add(x, y):
print("两数相连",x + y)
def clear():
os.system("cls")
def main():
while True:
try:
cmd = str(input("[Shell] # ")).split()
cmd_len = len(cmd)
if (cmd == ""):
continue
elif (cmd[0] == "exit"):
exit(1)
elif (cmd[0] == "clear"):
clear()
elif (cmd[0] == "add"):
if(cmd_len-1 >= 2):
temp1 = cmd[1]
temp2 = cmd[2]
add(temp1,temp2)
else:
print("add 参数不正确,至少传递2个参数")
else:
print("没有找到这个命令")
except Exception:
continue
if __name__ == '__main__':
main()

如果需要编写一些相对大型的项目,则需要使用类来开发,以下代码用类实现的命令行传递.

#coding:utf-8
import optparse
class MyClass:
def __init__(self):
usage = '''
$$\ $$\ $$\
$$ | $$ | $$ |
$$ |$$\ $$\ $$$$$$$\ $$$$$$$\ $$$$$$\ $$$$$$\ $$ | $$\
$$ |$$ | $$ |$$ _____|$$ __$$\ \____$$\ $$ __$$\ $$ | $$ |
$$ |$$ | $$ |\$$$$$$\ $$ | $$ | $$$$$$$ |$$ | \__|$$$$$$ /
$$ |$$ | $$ | \____$$\ $$ | $$ |$$ __$$ |$$ | $$ _$$<
$$ |\$$$$$$$ |$$$$$$$ |$$ | $$ |\$$$$$$$ |$$ | $$ | \$$\
\__| \____$$ |\_______/ \__| \__| \_______|\__| \__| \__|
$$\ $$ |
\$$$$$$ |
\______/
'''
parser = optparse.OptionParser(usage=usage)
parser.add_option("-s", "--server", type="string" , dest="server", help="you server IP")
parser.add_option("-p", "--port", type="int", dest="port", help="you server port")
self.options, self.args = parser.parse_args()
parser.print_help()
def check(self):
if not self.options.server or not self.options.port:
exit()
def fuck(self,ip,port):
try:
print("接收到参数列表,准备执行功能!")
for i in range(0,100):
print(ip,port)
except:
print("[ - ] Not Generate !") if __name__ == '__main__':
opt = MyClass()
opt.check() ip = opt.options.server
port = opt.options.port
if ip != "None" and port != "None":
opt.fuck(ip,port)

Python 命令行模块使用技巧的更多相关文章

  1. 快速上手 Python 命令行模块 Click

    关于Click? 说下 Click 模块是干啥的,简单说,它就是把我们的 Python 脚本的一些函数,通过 添加带有 Click 关键字的装饰器进行装饰进而将函数调用的形式转化为命令行传参的形式然后 ...

  2. Python命令行模块(sys.argv,argparse,click)

    Python作为一门脚本语言,经常作为脚本接受命令行传入参数,Python接受命令行参数大概有三种方式.因为在日常工作场景会经常使用到,这里对这几种方式进行总结. 命令行参数模块 这里命令行参数模块平 ...

  3. python命令行解析模块--argparse

    python命令行解析模块--argparse 目录 简介 详解ArgumentParser方法 详解add_argument方法 参考文档: https://www.jianshu.com/p/aa ...

  4. Python多版本情况下四种快速进入交互式命令行的操作技巧

    因为工作需求或者学习需要等原因,部分小伙伴的电脑中同时安装了Python2和Python3,相信在Python多版本的切换中常常会遇到Python傻傻分不清楚的情况,今天小编整理了四个操作技巧,以帮助 ...

  5. Python命令行参数解析模块getopt使用实例

    Python命令行参数解析模块getopt使用实例 这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参 ...

  6. python命令行下tab键补全命令

    在python命令行下不能使用tab键将命令进行补全,手动输入又很容易出错. 解决:tab.py #/usr/bin/env python # -*- coding:utf-8 -*- ''' 该模块 ...

  7. CentOS 6.5上安装python2.7、pip以及Python命令行补全和yum冲突解决

    目前CentOS6.5上自带的python版本为2.6,升级到python2.7会碰到很多问题.本文将介绍如何安装python2.7.pip以及python命令行补全. 一.如何安装python2.7 ...

  8. 让你如绅士般基于描述编写 Python 命令行工具的开源项目:docopt

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  9. Shodan搜索引擎详解及Python命令行调用

    shodan常用信息搜索命令 shodan配置命令 shodan init T1N3uP0Lyeq5w0wxxxxxxxxxxxxxxx //API设置 shodan信息收集 shodan myip ...

随机推荐

  1. GPS 经纬度

      经纬度地图: http://www.gpsspg.com/maps.htm http://www.gzhatu.com/dingwei.html 经纬度格式转化 http://www.gzhatu ...

  2. nrm -- 一键切换npm源

    0. 背景 先描述一下没有nrm时我们是怎样使用npm源的 查看npm源地址,终端中输入 npm config list 可以看到npm源 metrics-registry = "https ...

  3. Mosquitto--webServer应用测试结果

    https://blog.csdn.net/u012377333/article/details/71123671 Mosquitto--webServer应用测试结果 一.测试环境介绍 二.测试流程 ...

  4. Comparison and difference for Default geodatabase,Current workspace,Scratch workspace,Home Folder

    Comparison and difference for Default geodatabase,Current workspace,Scratch workspace,Home Folder 商务 ...

  5. 新概念英语第二册Lesson5:No wrong numbers

    Lesson 5 No wrong numbers 无错号之虞 First listen and then answer the question. 听录音,然后回答以下问题. What does ' ...

  6. Composer 安装 Jira API 库

    环境要求: PHP >= 5.5.9 php JsonMapper phpdotenv 安装 下载安装 Composer curl -sS https://getcomposer.org/ins ...

  7. [原][GIS]ARCGIS投影坐标系转换

    ARCGIS投影坐标转换步骤: 1.在ARCGIS中加入需要转换投影坐标的数据 2.打开“工具组”中的 “数据管理工具组”(Data Management Tools) 3.打开“数据管理工具组”中的 ...

  8. 004-行为型-06-命令模式(Command)

    一.概述 是一种数据驱动的设计模式 请求以命令的形式包裹在对象中,并传给调用对象.调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令. 将请求封装成对象,以便使用不同的请 ...

  9. AD域 域管理员常用命令

    简介: 暂时我需要管理60台终端计算机,但是分布的比较广泛,在我们单位整个场区零零散散的分布,巡检一圈仅步行时间就超过30分钟. 为了更好的管理终端计算机,现在正在实验性的配置域,用域来管理这些计算机 ...

  10. while死循环

    while死循环放入主线程要注意,如果处理不当可能引起界面假死,如果界面假死,可以放入子线程中(如果每个循环处理时间现对于CPU很短,则建议在本次循环结束的尾部加入Sleep以释放对CPU的占用) C ...