1

这是我在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)
4

1 回答 1

1

Errno 2可以表示找不到文件。对于执行脚本的用户,可能iwconfig不在 PATH 中。尝试使用/sbin/iwconfig可执行文件的(完整路径)来排除这种情况。

于 2018-11-11T16:52:21.137 回答