Visualizar a data e hora de um servidor SNTP e atualizar na BIOS do sistema

Publicado por Fábio C. Barrionuevo da Luz (última atualização em 10/08/2010)

[ Hits: 7.183 ]

Download setclock.py




Script python para visualizar a data e hora de um servidor SNTP e atualizar na BIOS do sistema - hwclock.

Ele utiliza uma consulta a um servidor SNTP da Apple. É necessário ter instalado o hwclock e o date.

Executar:

# ./setclock.py

Mostra a hora do servidor SNTP.

Use o parâmetro  --set para atualizar a BIOS do sistema. Ex.:

# ./setclock.py --set

O script só atualiza a hora se for utilizado como root.

O setclock.py só funciona se a rede já estiver configurada e houver acesso a internet.



  



Esconder código-fonte

Nome do Script: setclock.py

Codigo fonte:

#!/usr/bin/python
from socket import *
import struct,os,time,sys

#Modificado por Fabio C. Barrionuevo da Luz, Jul/2010
#use "setclock.py" para imprimir a hora do servidor sntp
#use como super usuario "setclock.py --set" para mudar a hora da BIOS e do sistema
#OBS: por usar um servidor sntp, a confiabilidade da hora pode não ser a esperada.
#pode haver atrasos ou adiantamentos.
#para mais informacoes, consulte:
#http://ntp.br/faq.html#5 , http://ntp.br/, www.ntp.org, 


# Script to set Linux hardware clock (/usr/sbin/hwclock or /sbin/hwclock) from an NTP
# time server.   Run as "setclock.py" to simply print the time from
# the NTP server.  Run as "setclock.py --set" to set the Linux
# hardware clock (as the super user, of course).

# Based on Simon Foster's simple SNTP client from ASPN Python cookbook.
# Adapted by Paul Rubin; this script lives at:
#    http://www.nightsong.com/phr/python/setclock.py


time_server = ('time.apple.com', 123)
# time.apple.com is a stratum 2 time server.  (123 is the SNTP port number).
# More servers info can be found at
#
#   http://www.eecis.udel.edu/~mills/ntp/servers.htm
#
# Note it's considered antisocial to use a stratum 1 server (like NIST)
# for purposes like this which don't need extreme accuracy (i.e. syncing
# your own big NTP network).  See www.ntp.org for more info.
#
# You could also use time.windows.com (Microsoft server) which syncs
# all Windows XP machines everywhere, so it can presumably handle lots
# of clients.

# number of seconds between NTP epoch (1900) and Unix epoch (1970).
TIME1970 = 2208988800L      # Thanks to F.Lundh

client = socket( AF_INET, SOCK_DGRAM )
data = '\x1b' + 47 * '{FONTE}'
client.sendto(data, time_server)
data, address = client.recvfrom( 1024 )
if data:
    print 'Resposta recebida de', address,'\n'
    t = struct.unpack( '!12I', data )[10]
    if t == 0:
        raise 'resposta invalida'
    ct = time.ctime(t - TIME1970)
    print 'Data/Hora atual = %s\n' % ct
    if len(sys.argv) > 1 and sys.argv[1] == "--set":
        print 'Atualizando hora da BIOS'
        print 'Hora da Bios modificada de:'
        os.system("date")  
        #muda a hora da bios      
        os.system("hwclock --set '--date=%s'"% ct)
   #copia a hora da bios para a hora do sistema
        os.system("hwclock --hctosys")
        print 'para:'
        os.system("date")
else:
    raise 'nenhuma informacao retornada'



Scripts recomendados

Crivo de Eratóstenes Simples em Python

Agendador de comandos

Calcula a idade da pessoa em dias

Versão das principais distribuições.

Coquetel


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário