Решение
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 не будет работать.