Wann wird subprocess.call () oder subprocess.Popen () verwendet, wenn airodump ausgeführt wird?

Ich habe dieses kleine Skript, das Ihr drahtloses Gerät in den Überwachungsmodus versetzt. Es führt einen Airodump-Scan durch und nach dem Beenden des Scans wird die Ausgabe in die Datei file.txt oder in eine Variable geschrieben, sodass ich die BSSID und alle anderen Informationen, die ich möglicherweise benötige, abschaben kann.

Ich glaube, ich habe das Konzept oder den Unterschied zwischen nicht begriffensubprocess.call() undsubprocess.Popen().

Das habe ich aktuell:

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

Ich weiß immer noch nicht, wo und wann und wie ich es verwenden sollsubprocess.call() undsubprocess.Popen()

Die Sache, die mich am meisten verwirrt, ist diestdout undstderr Argumente. Was istPIPE?

Eine andere Sache, die ich möglicherweise selbst reparieren könnte, sobald ich ein besseres Verständnis habe, ist die folgende:

Wannrunning subprocess.Popen() Wenn Airodump ausgeführt wird, wird im Konsolenfenster der Scan angezeigt. Gibt es eine Möglichkeit, dies vor dem Benutzer zu verbergen, um aufzuräumen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage