这是我对stackoverflow的第一篇文章,所以请忍受:)

我正在尝试从python脚本读取iwconfig的输出,以确定是否存在wifi连接。当我使用crontab @reboot(用户而不是root用户)运行脚本(通过首先设置目录的bash脚本)时,subprocess.check_output(['iwconfig'])总是抛出[Errno 2]。当我使用try / except捕获错误并循环代码时,甚至甚至是这样,因此当Wifi肯定已连接时,它仍在运行(我可以手动运行iwconfig进行检查)。当我通过命令行通过相同的bash脚本运行python脚本时,它工作正常。我在俯视什么?

#!/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)

最佳答案

Errno 2可以指示找不到该文件。
对于执行脚本的用户,iwconfig可能不在PATH中。尝试使用可执行文件的/sbin/iwconfig(完整路径)将其排除在外。

07-27 23:48