martes, 19 de marzo de 2013

róbate la hora


Los cubanos le sacamos agua a un ladriyo :D

Para aquellos que 50 segundos de diferencia no le quita el sueño; ya pueden actualizar detrás de un servidor proxy y no necestian NTP ya que con este método lo que hacemos es:

   "setear la hora usando el header Date: de un servidor remoto"

al cron le ponemos una tarea asi:

 # cada una hora, sincronizate
 00 * * * * cronos.sh http://www.algunsitio.com

El script recibe una URL como parámetro y de ahí se fachará la hora. Google tiene una hora bien firme pero no creoq ue le haga mucha gracias tu pedidera de encabezados. Asegúrate de usar algun servicio decente...

sin mas, aqui los dejo con el script

#!/bin/bash
#
# http://github.com/uranio-235/dev/blob/master/cronos.sh
#
# debemos esperar a que comienze un segundo para
# evitar que la transicion 59 > 00 cause drift
while test $(date +%S) -gt 10; do sleep 5; done

# ejecutamos test y curl para que se cacheen
# en memoria y arranquen mas rapido despues
curl --help 2> /dev/null > /dev/null
test

# calentamos los motores aritmeticos tambien :D
echo $(($(seq 1 9|shuf|tail -1)*$(seq 1 9|shuf|tail -1)-$(seq 1 9|shuf|tail -1)))

# trae la fecha del header Date:
remota=$(curl -I $1 2> /dev/null |grep 'Date:'|sed s/'Date: '/''/g)

# arrestun momentum
local=$(date +%s)

# si el sistema tiene la misma fecha ni te inmutes
test $(date -d "$remota" +%s) = $local && exit 0

# un segundo menos es por culpa de Einstein, asume que esta bien
test $(date -d "$remota" +%s) = $(($local-1)) && exit 0

# SETEA LA FECHA!
date -s "$remota"

# logueo por syslog
logger 'le fachamos a' $1 'las' $(date)

exit 0
# vim:fo=tcq:tw=75:nowrap:
# EOF





No hay comentarios:

Publicar un comentario

Si vas a decir groserias, aclara el significado para los que no somos de tu mismo país.