Когда использовать subprocess.call () или subprocess.Popen (), запустив airodump

У меня есть этот маленький скрипт, который переводит ваше беспроводное устройство в режим монитора. Он выполняет сканирование airodump, а затем после завершения сканирования выводит выходные данные в файл file.txt или переменную, чтобы затем я мог очистить BSSID и любую другую информацию, которая может мне понадобиться.

Я чувствую, что не имеют понял концепцию или разницу междуsubprocess.call() а также .subprocess.Popen()

Вот что у меня сейчас есть:

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

Я до сих пор не знаю, где, когда и каким образом использоватьsubprocess.call() а такжеsubprocess.Popen()

Больше всего меня смущает то, чтоstdout а такжеstderr арг. Что такое ?PIPE

Еще одна вещь, которую я мог бы исправить сам, как только я получу лучшее представление, это:

когдаrunning subprocess.Popen() и запуска airodump, всплывающее окно консоли показывает сканирование. Есть ли способ скрыть это от пользователя, чтобы что-то почистить?

Ответы на вопрос(1)

Ваш ответ на вопрос