У меня есть скрипт Python, который сначала убивает все процессы hostapd
, затем запускает новый.Я хочу захватить выходные данные команды запуска hostapd
, чтобы определить, возвращает ли она AP-ENABLED
или AP-DISABLED
, поэтому я решил записать ее во временный файл, а затем прочитать.
Однако open()
зависаетнеопределенно, или пока я не использую ctrl-c;программа не завершается, но вместо этого извлекает ожидаемый вывод:
Line #0: Configuration file: /etc/hostapd/hostapd.conf
Line #1: Failed to create interface mon.wlan0: -95 (Operation not supported)
Line #2: wlan0: interface state UNINITIALIZED->COUNTRY_UPDATE
Line #3: wlan0: Could not connect to kernel driver
Line #4: Using interface wlan0 with hwaddr b8:27:eb:35:34:de and ssid "Coriolis"
Line #5: random: Only 6/20 bytes of strong random data available from /dev/random
Line #6: random: Not enough entropy pool available for secure operations
Line #7: WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
Line #8: wlan0: interface state COUNTRY_UPDATE->ENABLED
Line #9: wlan0: AP-ENABLED
Код:
import subprocess
import os
import sys
def start_hostapd():
# kill any existing hostapd process
subprocess.call(['killall', 'hostapd'])
# start new hostapd process
os.system('hostapd /etc/hostapd/hostapd.conf > ./hostapd.log')
# capture the output
line_num = 0
with open('hostapd.log', 'r') as file:
for line in file:
print('\nLine #{}: {}'.format(line_num, line))
line_num += 1
# sys.stdout.flush()
if __name__ == '__main__':
start_hostapd()
Я пытался добавить sys.stdout.flush()
, но безрезультатно.