Остановите запущенный процесс в терминале Linux через модуль подпроцесса Python (airodump-ng)
Я написал программу (я запустил ее в терминале), которая просматривает список команд терминала ( Kali Linux).
import subprocess as sub
import time
sub.call(['airmon-ng', 'start', 'wlan0'])
p = sub.call(['airodump-ng','wlan0mon'])
time.sleep(10)
p.kill()
Последняя команда airodump-ng wlan0mon
, Все работает нормально (все отображается в терминале (маяки, essid и т. Д.).
Через указанное время я хочу убить процесс (airodump-ng wlan0mon
).
Я не хочу нажимать Ctrl + C вручную!p.kill()
не работает (возможно, неправильное использование).
Как я могу это сделать? Какую команду я должен отправить через модуль подпроцесса?
1 ответ
subprocess.call
Метод - это высокоуровневый API, который ожидает завершения процесса перед возвратом его кода завершения. Если вам требуется, чтобы ваш основной процесс продолжался во время работы подпроцесса, вам нужно использовать API более низкого уровня: subprocess.Popen
, который запускает процесс в фоновом режиме.
С помощью p = sub.Popen(['airodump-ng','wlan0mon'])
вместо p = sub.call(['airodump-ng','wlan0mon'])
должно сработать.