我对Python3(和Python 2.x(很陌生 我使用了很多nmap来定期扫描我的服务器,以确保打开或关闭正确的端口。
我的目标是用nmap编写一个Python3脚本,供其他IT人员使用。我希望我的脚本执行以下操作:
-
选择要扫描的选项
option 1 quick scan option 2 most common tcp ports option 3 scan ports 1-6000
-
询问用户是要将扫描结果写入输出文件,还是只是运行扫描并从终端读取输出。
-
输入要扫描的 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 扫描程序