iwconfig недоступен для процессов, запущенных с помощью crontab @reboot?

Это мой первый пост в stackru, поэтому, пожалуйста, потерпите меня:)

Я пытаюсь прочитать вывод iwconfig из сценария Python, чтобы определить, есть ли соединение Wi-Fi. Когда я запускаю скрипт (через скрипт bash, который сначала устанавливает каталог), используя crontab @reboot (пользователь, а не root), subprocess.check_output(['iwconfig']) всегда выбрасывает [Errno 2]. Это даже верно, когда я улавливаю ошибку, используя попытку / исключение и зацикливая код, поэтому он все еще работает, когда Wi-Fi определенно подключен (как я могу проверить, запустив iwconfig вручную). Когда я запускаю скрипт python из командной строки через тот же скрипт bash, он работает нормально. Что я пропускаю?

#!/usr/bin/python3

import subprocess
import time
import logging

logging.basicConfig(filename='wifi_check.log', filemode='w', format='%(name)s - %(levelname)s 
    - %(message)s', level=logging.DEBUG)

logging.info("Checking for Wifi")

for i in range(20):

    try:
        iwconfig_output = subprocess.check_output(['iwconfig']).decode('utf-8')
    except Exception as err:
        logging.error(str(i) + str(err))
    else:
        logging.debug(str(i) + iwconfig_output)
        if "ESSID" in iwconfig_output:
            logging.info(str(i) + "Wifi active")

    time.sleep(10)

1 ответ

Решение

Errno 2 Можно указать, что файл не найден. возможно iwconfig не находится в PATH для пользователя, который выполняет сценарий. Попробуйте использовать /sbin/iwconfig (полный путь) исполняемого файла, чтобы исключить это.

Другие вопросы по тегам