iwconfig недоступен для процессов, запущенных с помощью crontab @reboot? - PullRequest
0 голосов
/ 11 ноября 2018

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

Я пытаюсь прочитать вывод 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 Ответ

0 голосов
/ 11 ноября 2018

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

...