我正在研究一个简单的portscanner,并且我希望我的程序在由命令shell执行时采用两个选项。一般来说,它只能从shell执行,因为程序绝对需要这些选项。optparse不会收集传递给选项的所有值
我想要的选项是:
-H
:主机的IP地址
-p
:应该被扫描
这里所有端口的列表是我的问题:我想要的端口
D:\LocalUser\MyPython\Portscanner>C:\Users\LocalUser\AppData\Local\Programs\Pytho n\Python35-32\python.exe portscanner_v0.0.py -H 192.168.1.1 -p 21, 1720, 8000
不幸的是,他们似乎并没有被我的程序收集,只有第二个选项的第一个值被读取到我的代码中的变量中。我正在使用optparse和Python 3.5,请告诉我如何从shell中获取所有端口。
这里是我的代码:
def portScan(tgtHost, tgtPorts):
#doing my port scans
#wont show my actual code here, it's working fine
def main():
parser = optparse.OptionParser('usage%prog ' + ' -H <target host> -p <target port>')
parser.add_option('-H', dest='tgtHost', type='string', help='specify target Host')
parser.add_option('-p', dest='tgtPort', type='string', help='specify target port[s] separated by comma')
(options, args) = parser.parse_args()
tgtHost = options.tgtHost
tgtPorts = str(options.tgtPort).split(', ')
if ((tgtHost == None) | (tgtPorts[0]==None)):
print(parser.usage)
exit(0)
portScan(tgtHost, tgtPorts)
if __name__ == "__main__":
main()
工作正常,谢谢!有没有办法使用空间(只是问...)? –