Извлечь значение смещения ntpdate в переменной в python

Я хочу проверить, превышает ли время смещения более 0,5 секунды и выполняет некоторые действия. Я выполняю команду ntpdate -q <Server ip address>

Может ли кто-нибудь сказать мне, как мне взять значение смещения в переменной, чтобы я мог выполнять дальнейшие действия?

  • Что включать в RPM, созданный из пакетов python
  • Ошибка ImportError: отсутствие модуля с именем _struct при управлении пакетами
  • Включите SCL python27, чтобы другие RPM могли его видеть
  • Преобразование CSV в TSV
  • Грепление переменной
  • Сделать пакет debian для установки python
  • Преобразование bsonfile с двумя разными выходами
  • Почему этот скрипт Python не может получить доступ к XDisplay из Root-терминала?
  • 2 Solutions collect form web for “Извлечь значение смещения ntpdate в переменной в python”

    Решение

     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 вызывает оболочку для выполнения действия.

    ~~~~~~~~~ EDIT ~~~~~~~~~~~

    У меня также нет комментариев для комментариев, ха. Не могли бы вы сообщить мне, какая версия 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 не будет работать.

    Использовать backtics “ для оценки команды и назначить вывод переменной

     OFFSET=`ntpdate -q <Server ip address> |sed 's/.*\(offset\) \([0-9]\.[0-9]\+\).*/\2/'` if [[ $OFFSET -gt 0.5 ]]; then <do something...> fi 
    Interesting Posts

    Что такое многоадресный просмотр и почему он прерывает UPnP / DLNA?

    KDE: отключение пароля после возобновления

    Сравните два файла и распечатайте общие поля и их соответствующие номера строк в 1-м файле

    Можно ли назвать окна в emacs

    Сообщение «Неверная соль» при входе в систему. Какой алгоритм используется для генерации пароля пользователя?

    преобразование совместной работы в склеивание

    Коррумпированный заголовок метаданных LVM после обновления ядра

    Добавить или вычесть число из имен всех файлов в каталоге

    Могу ли я использовать команду «cp» с опцией -b, но не сработала ли она, если файл резервной копии уже существует?

    Средство чтения в командной строке (например, «меньше»), которое может указать строку, где пользователь перестает читать

    Почему есть два файла полномочий, созданных startx?

    Метафора для концепции оболочки?

    Не удалось создать файл rm: превышена дисковая квота

    Как ядро ​​Linux обрабатывает входы / выходы клавиатуры?

    Какие вложенные папки $ HOME нужно положить на диск с царапинами и который на резервном компьютере?

    Linux и Unix - лучшая ОС в мире.