Устройство показано с использованием lspci, но udev не загружает драйвер

Решение

import subprocess

output = subprocess.check_output('ntpdate -q 3.us.pool.ntp.org | head -1 | cut -d " " -f 6 | sed "s/.$//"', shell=True)

Вы можете изменить имя сервера« 3.us.pool.ntp.org »на NTP-сервер по вашему выбору.

При использовании этого метода выходная переменная будет содержать только смещение, указанное в первой строке выходных данных команды ntpdate, и вы можете делать все, что хотите, с этой цифрой после.

if output > X:
    do something...

Объяснение

Вы уже знаете, что делает ntpdate (ясно), поэтому вы знаете, что возвращаемый результат содержит много бесполезной информации о том, что вы пытаетесь сделать.

  • Подпроцесс позволяет вам запускать команды bash из вашего скрипта python.

  • check_output делает именно то, что написано на банке, и, в этом случае, сохраняет их в выходной переменной.

  • head -1 просто берет верхнюю строку вывода ntpdate, если используется пул, как я сделал в моем примере (различные результаты не должны сильно различаться, поэтому верхняя часть должна быть в порядке).

  • cut рассматривает строки как поля, разделенные пробелом. Он сортирует и выбирает 6-е поле, которое является значением смещения.

  • sed удаляет последний символ из этого значения, который является запятой, и разрушит любую вашу попытку фактически использовать значение.

  • shell = True вызывает оболочку для выполнения действия.

~~~~~~~~~ РЕДАКТИРОВАТЬ ~~~~~~~~~~~

У меня тоже нет представителя для комментариев, ха. Не могли бы вы сообщить мне, на какой версии python работает сервер @Iram Khan?

python -V

Я подозреваю, что это версия <2.7, как это было, когда была добавлена ​​функция check_output. В этом случае вам, возможно, придется изменить приведенное выше на:

import subprocess

cmd = "ntpdate -q 3.us.pool.ntp.org | head -1 | cut -d ' ' -f 6 | sed 's/.$//'"

ps = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

output = ps.communicate()[0]

Это должно сработать, если check_output не будет работать.

0
09.07.2015, 03:03
0 ответов

Теги

Похожие вопросы