Solução
import subprocess
output = subprocess.check_output('ntpdate -q 3.us.pool.ntp.org | head -1 | cut -d " " -f 6 | sed "s/.$//"', shell=True)
Você pode alterar o nome do servidor "3.us.pool.ntp.org" para o servidor NTP de sua escolha.
Com este método, a variável de saída irá conter somente o deslocamento indicado na primeira linha da saída do comando ntpdate e você poderá fazer o que quiser com essa figura depois.
if output > X:
do something...
Explicação
Você já sabe o que o ntpdate faz (claramente), então você saberá que a saída que ele traz possui muitas informações inúteis para o que você está tentando fazer.
-
O subprocesso permite que você execute comandos bash de dentro do seu script python
-
check_output faz exatamente o que diz na lata e, neste caso, armazena na variável de saída.
-
head -1 simplesmente pega a primeira linha da saída ntpdate se estiver usando um pool como eu fiz no meu exemplo (os vários resultados não devem variar muito, então o topo deve Fique bem).
-
cut trata as linhas como campos delimitados por um caractere de espaço. Ele classifica e seleciona o sexto campo que é o valor de deslocamento.
-
sed remove o último caractere desse valor, que é uma vírgula e arruinará qualquer tentativa que você fizer para realmente usar o valor.
-
shell = True invoca um shell para executar a ação.
~~~~~~~~~ EDITAR ~~~~~~~~~~~
Eu também não tenho o representante para comentar, ha. Você poderia por favor me avisar qual versão do python o servidor está executando @Iram Khan?
python -V
Eu suspeito que seja uma versão < 2.7 como era quando a funcionalidade check_output foi adicionada. Nesse caso, você pode ter que alterar o acima para:
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]
Isso deve ser feito se check_output não funcionar.