Я работаю над простым сканером портов и хочу, чтобы моя программа принимала два параметра при выполнении командной оболочкой. В общем случае его можно запустить только из оболочки, так как параметры программы абсолютно необходимы.
Я хочу, чтобы варианты были:
-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, подскажите, пожалуйста, как получить ВСЕ порты из оболочки.
Вот мой код:
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()