Python &引用;someVariable是None";始终为false w/从OptPass结果导出的值
我真的很生气,因为我在用python编写一个简单的说教式portscanner时遇到了一个无法解决的问题。代码如下:Python &引用;someVariable是None";始终为false w/从OptPass结果导出的值,python,sockets,Python,Sockets,我真的很生气,因为我在用python编写一个简单的说教式portscanner时遇到了一个无法解决的问题。代码如下: def main(): parser = optparse.OptionParser("usage%prog "+\ "-H <target host> -p <target port>") parser.add_option('-H', dest='tgtHost', type='string', \ help='spec
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)).replace(",", " ").split()
if (tgtHost is None) | (tgtPorts is None):
print '[-] You must specify a target host and port[s].'
exit(0)
在使用主机和不使用-p时,会发生以下情况:
$ python portscanner.py -H 1234
[+] Scan Results for: 0.0.4.210
Scanning port None
Traceback (most recent call last):
File "portscanner.py", line 45, in <module>
main()
File "portscanner.py", line 43, in main
portScan(tgtHost, tgtPorts)
File "portscanner.py", line 29, in portScan
connScan(tgtHost, int(tgtPort))
ValueError: invalid literal for int() with base 10: 'None'
$python portscanner.py-H 1234
[+]的扫描结果:0.0.4.210
扫描端口无
回溯(最近一次呼叫最后一次):
文件“portscanner.py”,第45行,在
main()
文件“portscanner.py”,第43行,主
端口扫描(tgtHost、tgtPorts)
portScan中第29行的文件“portscanner.py”
连接扫描(tgtHost,int(tgtPort))
ValueError:基数为10的int()的文本无效:“无”
所以脚本抛出一个错误,因为它无法将None转换为int,这就是一致性检查的要点。我已经尝试在(tgtPorts[0]为无)中更改(tgtPorts为无),但没有更改。谷歌也搜索过,但似乎没有人有同样的问题。有什么想法吗?您有一个字符串,其中包含单词'None'
,而不是None
对象
您在此处将其设置为字符串:
tgtPorts = str((options.tgtPort)).replace(",", " ").split()
不要在那里使用str()
,而是测试options.tgtPort
是否具有真值(例如非None
或空字符串):
请注意,|
是按位的或者,您应该真正使用或者
。我首先测试选项,然后分析:
在这里,省略选项和不指定值都是错误的
就我个人而言,我会使用here和required参数,将port参数设置为
nargs='+'
,以捕获一个或多个值。错误处理然后由[…]
表明您的价值可能是一个列表或列表理解(这两种情况都表明了不同的实际原因和解决方案)。谢谢,这不仅有效,而且您以清晰易懂的方式解释了它。
tgtPorts = str((options.tgtPort)).replace(",", " ").split()
if options.tgtPort:
tgtPorts = options.tgtPort.replace(",", " ").split()
if not (options.tgtHost and options.tgtPort):
print '[-] You must specify a target host and port[s].'
exit(1)