#python #raspberry-pi #cgi #speed-test
#python #raspberry-pi #cgi #проверка скорости
Вопрос:
Новичок в python, так что, вероятно, это что-то простое. Raspberry Pi 4, с запущенным apache и подключенным CGI. Speedtest-cli установлен и работает нормально. Я могу запустить приведенный ниже скрипт в Putty без проблем. Но когда я пытаюсь запустить его в cgi-bin для теста, я получаю сообщение об ошибке в этой строке:
выведите ping.group(1)
Ошибка: <введите ‘исключения.AttributeError’>: объект ‘NoneType’ не имеет атрибута ‘group’
Кажется, он пропускает строку, в которой вызывается speedtest: response = subprocess.Popen(‘/usr/bin/speedtest’, shell=True, стандартный вывод=подпроцесс.PIPE).stdout.read().decode(‘utf-8’)
Опять же, это отлично работает в Putty.
#!/usr/bin/python
print ('Content-Type: text/html')
print
import os
import re
import subprocess
import time
import cgi, cgitb
cgitb.enable()
try:
while(True):
print("rGetting data")
print("------------------------------------")
response = subprocess.Popen('/usr/bin/speedtest', shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')
#print(response)
ping = re.search("Latency:s (.*?)s ", response, re.MULTILINE)
download = re.search("Download:s (.*?)s", response, re.MULTILINE)
upload = re.search("Upload:s (.*?)s", response, re.MULTILINE)
ping = ping.group(1)
download = download.group(1)
upload = upload.group(1)
print("Ping: " ping " m/s")
print("Download: " download " mb/s")
print("Upload: " upload " mb/s")
time.sleep(1810)
print("rnrn")
except:
cgitb.handler()
Комментарии:
1.
re.search("Latency:s (.*?)s ", response, re.MULTILINE)
возвращает None, что, я полагаю, означает, что он не нашел совпадения. Дважды проверьтеresponse
, содержит ли он данные, которые, по вашему мнению, есть.2. Что вы увидите, если раскомментируете
print(response)
строку? Кажется важным.3. Я получаю все .. запуск в cgi-bin, я получаю ту же ошибку. Похоже на подпроцесс вызова. Popen ничего не возвращает. Но это работает… .только не тогда, когда я делаю это на apache / cgi-bin. Печать (ответ) была тестом, чтобы увидеть, что возвращалось…