Sincronizacion De Fecha Hora

situacion

maquina virtual con red configurada con un proxy http con autenticacion

el servicio ntp no puede sincronizar

*version 2013.11

#!/bin/bash
 # 2010-2013 (c) deshn, kseltar
 # date/hwclock sinchronizer 1.1: on proxy http virtualized enviroment
 
uri="http://es.thetimenow.com/";
#uri="http://api.openweathermap.org/data/2.5/weather?q=Asuncion&mode=xml";
winterstart="0408";
winterendng="1007";
cwget="/usr/bin/wget";
ccat="/bin/cat";
cgrep="/bin/grep";
csed="/bin/sed";
ctr="/usr/bin/tr";
searchstr="lastupdate";
cmv="/bin/mv";
crev="/usr/bin/rev";
chead="/usr/bin/head";
crm="/bin/rm";
mfile="/tmp/osmclima.xml";
mfile2="/tmp/osmclima2.xml";
$crm -rf $mfile
 
#capturar datos de la web
#$app -c $uri -O $mfile
ac=`date +%m%d`;
ac=`expr $ac + 0`;
ws=`expr $winterstart + 0`;
we=`expr $winterendng + 0`;
echo "--"$ac";"--$ws";"--$we";";
 
if [ "$ac" -ge "$ws" ] && [ "$ac" -lt "$we" ]; then
  cambio="-4";
 #echo "invierno";
else
  cambio="-3";
#  echo "verano";
fi
 
function ceros () {
  local mvalores=`/bin/echo $1`;
  mvalores=`expr $mvalores + 0`;
  if [ "$mvalores" -le "9" ];then
    cceros="0"$mvalores;
  else
    cceros=$mvalores;
  fi
  echo $cceros;
}
 
function meses () {
  local mvalores=`/bin/echo $1`;
  case $mvalores in "Jan") local mmeses="01"; ;; "Feb") local mmeses="02"; ;; "Mar") local mmeses="03"; ;; "Apr") local mmeses="04"; ;; "May") local mmeses="05"; ;; "Jun") local mmeses="06"; ;; "Jul") local mmeses="07"; ;; "Aug") local mmeses="08"; ;; "Sep") local mmeses="09"; ;; "Oct") local mmeses="10"; ;; "Nov") local mmeses="11"; ;; "Dec") local mmeses="12"; ;; esac
  echo $mmeses;
}
 
######################## EJEMPLO DE DATOS COLECTADOS
################################### ejemplo ###################################
#
###############################################################################
 
$cwget -c $uri -O $mfile
$ccat $mfile | $cgrep "timediv" > $mfile2
$csed 's/\/div/\n/g' $mfile > $mfile2
$cmv $mfile2 $mfile
$ccat $mfile | $cgrep "timediv" > $mfile2
$csed 's/\"//g' $mfile2 > $mfile
$csed 's/\///g' $mfile > $mfile2
$csed 's/\%//g' $mfile2 > $mfile
$csed 's/id\=//g' $mfile > $mfile2
$csed 's/\ /\./g' $mfile2 > $mfile
$csed 's/</\./g' $mfile > $mfile2
$csed 's/>/\./g' $mfile2 > $mfile
$csed 's/=/\./g' $mfile > $mfile2
$csed 's/data-tz\.AmericaAsuncion//g' $mfile2 > $mfile
$csed 's/main_time/\nmaintime/g' $mfile > $mfile2
$csed 's/main_date/\nmaindate/g' $mfile2 > $mfile
$csed 's/span//g' $mfile > $mfile2
$csed 's/\,//g' $mfile2 > $mfile
$csed 's/\.de./\./g' $mfile > $mfile2
$csed 's/\.\.\./\./g' $mfile2 > $mfile
$csed 's/\.\./\./g' $mfile > $mfile2
$cmv $mfile2 $mfile
$ccat $mfile | $cgrep "maintime" > $mfile2
$ccat $mfile | $cgrep "maindate" >> $mfile2
$csed 's/domingo\.//g' $mfile2 > $mfile
$csed 's/lunes\.//g' $mfile > $mfile2
$csed 's/martes\.//g' $mfile2 > $mfile
$csed 's/miercoles\.//g' $mfile > $mfile2
$csed 's/jueves\.//g' $mfile2 > $mfile
$csed 's/viernes\.//g' $mfile > $mfile2
$csed 's/sabado\.//g' $mfile2 > $mfile
$csed 's/\.enero\./-01-/g' $mfile > $mfile2
$csed 's/\.febrero\./-02-/g' $mfile2 > $mfile
$csed 's/\.marzo\./-03-/g' $mfile > $mfile2
$csed 's/\.abril\./-04-/g' $mfile2 > $mfile
$csed 's/\.mayo\./-05-/g' $mfile > $mfile2
$csed 's/\.junio\./-06-/g' $mfile2 > $mfile
$csed 's/\.julio\./-07-/g' $mfile > $mfile2
$csed 's/\.agosto\./-08-/g' $mfile2 > $mfile
$csed 's/\.septiembre\./-09-/g' $mfile > $mfile2
$csed 's/\.octubre\./-10-/g' $mfile2 > $mfile
$csed 's/\.noviembre\./-11-/g' $mfile > $mfile2
$csed 's/\.diciembre\./-12-/g' $mfile2 > $mfile
#$csed 's/, /\r/g' $mfile > $mfile2
#$cmv $mfile2 $mfile
#echo "es lo descargado"
#$ccat $mfile
$ccat $mfile | $cgrep "maindate" > $mfile2"fecha"
$csed 's/maindate\.//g' $mfile2"fecha" > $mfile2"fechaaa"
$csed 's/-/:/g' $mfile2"fechaaa" > $mfile2"fechaa"
$ccat $mfile | $cgrep "maintime" > $mfile2"hora"
$csed 's/maintime\.//g' $mfile2"hora" > $mfile2"horaa"
$csed 's/\.//g' $mfile2"fechaa" > $mfile2
fecha=`$ccat $mfile2`
$csed 's/\.//g' $mfile2"horaa" > $mfile2
hora=`$ccat $mfile2`
#echo "---"$fecha"---"$hora"---"
#echo "#din"
#$ccat $mfile2
 
#$ccat $mfile | $cgrep "$searchstr" > $mfile2
#$cmv $mfile2 $mfile
#$ccat $mfile | $csed 's/\ \ \ \ //g' > $mfile2
#$cmv $mfile2 $mfile
 
#text=`$chead --lines=1 $mfile`;
#text=`echo $text | $crev `;
#text=${text:21};
#text=`echo $text | $crev `;
#text=${text:20};
text=$fecha":"$hora
text=`echo "$text"  | $csed 's/\ /:/g'`;
read diia mees anno hora minu segu <<<$(IFS=":"; echo $text)
#hora=`expr $hora + $cambio `
diia=$(ceros "$diia");
mees=$(ceros "$mees")
hora=$(ceros "$hora")
minu=$(ceros "$minu")
segu=$(ceros "$segu")
 
 fecha="$anno/$mees/$diia"
 fecha2="$anno-$mees-$diia"
 hora="$hora:$minu:$segu";
echo "$fecha2 - $hora"
/bin/date +"%Y/%m/%d %H:%M:%S" -s "$fecha $hora"
/sbin/hwclock --set --date="$fecha2 $hora"
 
 echo "Hora seteada";
 echo "CONTROL: "
 echo "     OS-DATE = "`/bin/date +"%a %d %b %Y %H:%M:%S %Z" `
 echo "  VM-HWCLOCK = "`/sbin/hwclock`" "
rm -rf $mfile
rm -rf /tmp/osm*
exit 0

*version 2010

 #!/bin/bash
 # 2010 (c) deshn, kseltar
 # date/hwclock sinchronizer 1.1: on proxy http virtualized enviroment
 
 # se indica la la uri donde se puede enconntar la hora exacta
 timeuri="http://www.timeanddate.com/worldclock/city.html?n=21";
 
 # el script a continuacion se especializa en el contenido del la uri timeanddate.com 
 
 # se descarga el contenido
 wget -c $timeuri -O /tmp/asutimenow0
 
 # se indican textos q conrrepondan a la linea q se requiere (esta salida contiene lineas largas) 
 opentag="Current Time";
 closetag="Show clock";
 
 # encontrar el texto que aparece a principio del parrafo (cerca del dato deseado)
 grep "$opentag" /tmp/asutimenow0 > /tmp/asutimenow1
 
 #linea actual
 lnum=0
 
 #analizar cada linea
 while read -r line
   do
     #eliminar todo hasta el parrado donde aparece el texto inicial
     line=${line#*$opentag}
     #eliminar todo desde el parrado donde aparece el texto final
     line=${line%$closetag*}
     #salta de la primera aparicion
     if (( lnum )); then echo "$lnum $line s"; fi
     (( lnum ++ ))
   done < /tmp/asutimenow1
 
 #leer los datos capturados y limpiar de caracteres indeseados
 wheretime=`cat "/tmp/asutimenow1"`;
 
 wheretime=${wheretime// /_};
 wheretime=${wheretime//"\""/_};
 wheretime=${wheretime//</_};
 wheretime=${wheretime//>/_};
 wheretime=${wheretime//=/_};
 wheretime=${wheretime//\//_};
 wheretime=${wheretime//:/_};
 wheretime=${wheretime//&/_};
 wheretime=${wheretime//./_};
 wheretime=${wheretime//,/_};
 wheretime=${wheretime//;/_};
 wheretime=${wheretime//\?/_};
 wheretime=${wheretime//\%/_};
 wheretime=${wheretime//|/_};
 
 #eliminar texto indeseado
 wheretime=${wheretime#___*Current_Time};
 wheretime=${wheretime/__th__td__strong_id_ct__class_big_/};
 wheretime=${wheretime%__strong__br_Show_clock*PYT__td___tr_};
 wheretime=${wheretime#*__};
 
 #extraer datos de fecha-hora
 nwday=${wheretime%%_*};
 wheretime=${wheretime#*_};
 nwmonth=${wheretime%%_*};
 wheretime=${wheretime#*_};
 nwyear=${wheretime%%_*};
 wheretime=${wheretime#*__};
 nwhour=${wheretime%%_*};
 wheretime=${wheretime#*_};
 nwminute=${wheretime%%_*};
 wheretime=${wheretime#*_};
 nwsecond=${wheretime%%_*};
 wheretime=${wheretime#*_};
 
 #eliminar archivos temporales
 rm -f /tmp/asutimenow*
 
 case "$nwmonth" in
   "January" ) nwmonths=01 ;;
   "February" ) nwmonths=02 ;;
   "March" ) nwmonths=03 ;;
   "April" ) nwmonths=04 ;;
   "May" ) nwmonths=05 ;;
   "June" ) nwmonths=06 ;;
   "July" ) nwmonths=07 ;;
   "August" ) nwmonths=08 ;;
   "September" ) nwmonths=09 ;;
   "October" ) nwmonths=10 ;;
   "November" ) nwmonths=11 ;;
   "December" ) nwmonths=12 ;;
 esac
 
 echo
 #echo $line;
 fecha="$nwyear/$nwmonths/$nwday"
 fecha2="$nwyear-$nwmonths-$nwday"
 hora="$nwhour:$nwminute:$nwsecond";
 /bin/date +"%Y/%m/%d %H:%M:%S" -s "$fecha $hora"
 /sbin/hwclock --set --date="$fecha2 $hora"
 
 echo "Hora seteada";
 echo "CONTROL: "
 echo "     OS-DATE = "`/bin/date +"%a %d %b %Y %H:%M:%S %Z" `
 echo "  VM-HWCLOCK = "`/sbin/hwclock`" "
 exit 0

fuente

Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.