Python3 nmap 脚本,带有 Yes No 选项



我对Python3(和Python 2.x(很陌生 我使用了很多nmap来定期扫描我的服务器,以确保打开或关闭正确的端口。

我的目标是用nmap编写一个Python3脚本,供其他IT人员使用。我希望我的脚本执行以下操作:

  1. 选择要扫描的选项

    option 1 quick scan
    option 2 most common tcp ports
    option 3 scan ports 1-6000
    
  2. 询问用户是要将扫描结果写入输出文件,还是只是运行扫描并从终端读取输出。

  3. 输入要扫描的 IP 地址

我能够为 1. 和 3. 但是我似乎无法编写带有"是我想要输出文件"选项的代码

os.system("nmap -T4 -A -v -Pn -oN outputfile.txt"+ str(ip)

或否,我不想要输出文件

os.system("nmap -T4 -A -v -Pn "+ str(ip)

我希望我在帖子中说得很清楚。我很乐意分享我已经编写的代码。

这是代码。我确信有错误。任何帮助将不胜感激。谢谢。

#!/usr/bin/python
#Library
import os, sys, time
print (sys.argv)
import subprocess
# Clear the screen
subprocess.call('clear', shell=True)
print('Welcome to ScanNmap')
print(' ')
def main():
print('Please make your selection')
print(' ')
print('[1] Quick scan')
print('[2] most common tcp ports + OS detection')
print('[3] Scan - all TCP ports.')
print('[9] Exit.')
print(' ')
option = input('Choose your Scanning Option:')

if (option == 1):
print('Do you want an output file?')
answer = input()
if answer == 'no':      
ip = input('Input IP Address / Hostname:')
os.system("nmap -T4 -v -Pn"+ str(ip))
print('n[**] Done n')
main()
else answer == 'yes':
ip = input('Input IP Address / Hostname:')
os.system('nmap -T4  -v -Pn -oN outputfile.txt'+ str(ip)
#print("n[**] Done n")
main()  
if (option == 2):
print('Do you want an output file?')
answer = input()
if answer == 'no':      
ip = input('Input IP Address / Hostname:')
os.system('nmap -T4 -A -v -Pn'+ str(ip))
print('n[**] Done n')
main()
else answer == 'yes':
ip = input('Input IP Address / Hostname:')
os.system('nmap -T4 -A -v -Pn -oN outputfile.txt'+ str(ip)
print('n[**] Done n')
main()
if (option == 3):
print('Do you want an output file?')
answer = input()
if answer == 'no':      
ip = input('Input IP Address / Hostname:')
os.system('nmap -T4 -p- -v -Pn'+ str(ip))
print('n[**] Done n')
main()
else answer == 'yes':
ip = input('Input IP Address / Hostname:')
os.system('nmap -T4 -p- -v -Pn -oN outputfile.txt'+ str(ip)
print('n[**] Done n')
main()

else:
print("nInvalid Option..Let's try again >>n")
main()

if __name__ == "__main__":
try:
main()
except KeyboardInterrupt: 
print("n Keyboard  has been stopped :(")
print("n[**] Stopping nmap scan.. Thank you for using NmapScan n")
time.sleep(2)
pass
#!/usr/bin/python
#Library
import os, sys, time
print (sys.argv)
import subprocess
# Clear the screen
subprocess.call('clear', shell=True)
print('Welcome to ScanNmap')
print(' ')
def main():
print('Please make your selectionn')
print('[1] Quick scan')
print('[2] most common tcp ports + OS detection')
print('[3] Scan - all TCP ports.')
print('[9] Exit.')
print('n')
option = int(input('Choose your Scanning Option:'))
print(option,type(option))
if (option == 1):
print('Do you want an output file?')
answer = input()
if answer == 'no':      
ip = input('Input IP Address / Hostname:')
os.system("nmap -T4 -v -Pn"+ str(ip))
print('n[**] Done n')
main()
elif answer == 'yes':
ip = input('Input IP Address / Hostname:')
os.system('nmap -T4  -v -Pn -oN outputfile.txt'+ str(ip))
print("n[**] Done n")
main()  
if (option == 2):
print('Do you want an output file?')
answer = input()
if answer == 'no':      
ip = input('Input IP Address / Hostname:')
os.system('nmap -T4 -A -v -Pn'+ str(ip))
print('n[**] Done n')
main()
elif answer == 'yes':
ip = input('Input IP Address / Hostname:')
os.system('nmap -T4 -A -v -Pn -oN outputfile.txt'+ str(ip))
print('n[**] Done n')
main()
if (option == 3):
print('Do you want an output file?')
answer = input()
if answer == 'no':      
ip = input('Input IP Address / Hostname:')
os.system('nmap -T4 -p- -v -Pn'+ str(ip))
print('n[**] Done n')
main()
elif answer == 'yes':
ip = input('Input IP Address / Hostname:')
os.system('nmap -T4 -p- -v -Pn -oN outputfile.txt'+ str(ip))
print('n[**] Done n')
#main()
else:
print("nInvalid Option..Let's try again >>n")
#main()

if __name__ == "__main__":
try:
main()
except KeyboardInterrupt: 
print("n Keyboard  has been stopped :(")
print("n[**] Stopping nmap scan.. Thank you for using NmapScan n")
time.sleep(2)
sys.exit(0)

我已经更正了您的代码,我认为您不清楚您的问题,如果您说出要如何扫描 IP(通过文件输入/动态(会更好。另一个想法是您可以使用nmap库以非常有效的方式以更少的代码行数完成它。

您的参考链接。

python-nmap 基本 TCP 扫描程序

最新更新