Мой код:
#!/usr/bin/python
## test communicate()
# Import the module
import subprocess
# Ask the user for input
host = raw_input("Enter a host to map: ")
# Set up the echo command and direct the output to a pipe
p1 = subprocess.Popen(['nmap', '-T0', '-F', host], stdout=subprocess.PIPE)
# Run the command
output = p1.communicate()[0]
print output
Когда я вхожу в хост, он не дает мне никакого вывода, и я вижу несколько экземпляров nmap, работающих с разными PID в процессах, поэтому он фактически выполняет команду.
Когда я Z^, он говорит: [n+1]+ Stopped ./sample.py Таким образом, nmap фактически запускается n+1 раз без вывода каких-либо результатов.
Он отлично работает с ping и traceroute следующим образом:
# Set up the echo command and direct the output to a pipe
p1 = subprocess.Popen(['ping', '-c 2', host], stdout=subprocess.PIPE)
p1 = subprocess.Popen(['traceroute', host], stdout=subprocess.PIPE)
Он также работает без nmap [options], например nmap google.com.
p1 = subprocess.Popen(['nmap', host], stdout=subprocess.PIPE)
Мой вопрос:
Это связано с Python или NMap? Что-то не так с этим кодом или я что-то упустил?