Cuándo usar subprocess.call () o subprocess.Popen (), ejecutando airodump
Tengo este pequeño script que pone su dispositivo inalámbrico en modo monitor. Realiza un escaneo en airodump y luego, después de finalizar el escaneo, descarga la salida a file.txt o una variable, de modo que luego pueda eliminar el BSSID y cualquier otra información que pueda necesitar.
Siento que no he comprendido el concepto o la diferencia entresubprocess.call()
ysubprocess.Popen()
.
Esto es lo que tengo actualmente:
def setup_device():
try:
output = open("file.txt", "w")
put_device_down = subprocess.call(["ifconfig", "wlan0", "down"])
put_device_mon = subprocess.call(["iwconfig", "wlan0", "mode", "monitor"])
put_device_up = subprocess.call(["iwconfig", "wlano", "up"])
start_device = subprocess.call(["airmon-ng", "start", "wlan0"])
scanned_networks = subprocess.Popen(["airodump-ng", "wlan0"], stdout = output)
time.sleep(10)
scanned_networks.terminate()
except Exception, e:
print "Error:", e
Sigo sin tener idea de dónde y cuándo y de qué manera usarsubprocess.call()
ysubprocess.Popen()
Lo que creo que más me confunde es elstdout
ystderr
args Que esPIPE
?
Otra cosa que podría arreglarme una vez que tenga una mejor comprensión es esta:
Cuandorunning subprocess.Popen()
y ejecutando airodump, la ventana de la consola aparece y muestra el escaneo. ¿Hay alguna forma de ocultarlo del usuario para limpiar las cosas?