#!/bin/sh # Frank Schlaefendorf # erstellt am 14.02.2005 # letzte Aenderung am 18.02.2005 # welcher zeitserver soll genutzt werden? # ntp|html|all|none USE_TIMESERVER="all" NTPSERVER1="" NTPSERVER2="" HTMLSERVER="http://www.schlaefendorf.de/datum.php4" # funktionsdefinitionen LOGGER="/usr/bin/logger -i -t systemzeit " biossetsystem(){ if [ -x /sbin/hwclock ]; then if grep "^UTC" /etc/hardwareclock 1> /dev/null 2> /dev/null ; then echo "Setze die Systemuhr mit der BIOS-Zeit (UTC)." $LOGGER " BIOS->System(UTC) " /sbin/hwclock --utc --hctosys --directisa else echo "Setze die Systemuhr mit der BIOS-Zeit (localtime)." $LOGGER " BIOS->System(localtime) " /sbin/hwclock --localtime --hctosys --directisa fi fi } systemsetbios(){ if [ -x /sbin/hwclock ]; then if grep "^UTC" /etc/hardwareclock 1> /dev/null 2> /dev/null ; then echo "Sichere die Systemzeit in der BIOS-Uhr (UTC)." $LOGGER " System->BIOS(UTC) " /sbin/hwclock --utc --systohc --directisa else echo "Sichere die Systemzeit in der BIOS-Uhr (localtime)." $LOGGER " System->BIOS(localtime) " /sbin/hwclock --localtime --systohc --directisa fi fi } ntpsetsystem(){ FEHLER=0 case ${USE_TIMESERVER} in ntp|all) NTPSERVER="${NTPSERVER1} ${NTPSERVER2}" if [ "${NTPSERVER}" != "" ]; then ntpdate -s ${NTPSERVER} FEHLER=$? if [ "$FEHLER" != "0" ]; then echo "Der Zeitabgleich ueber den NTP-Server $NTPSERVER ist fehlgeschlagen" $LOGGER " NTP->System " fi fi ;; *) echo "Die Systemzeit darf nicht ueber einen NTPSERVER aktualisiert werden" FEHLER=2 ;; esac return $FEHLER } htmlsetsystem(){ FEHLER=0 case ${USE_TIMESERVER} in html|all) if [ -e /etc/HTTP-PROXY ]; then http_proxy=$( cat /etc/HTTP-PROXY ) export http_proxy fi TIME=$( lynx -source ${HTMLSERVER} 2> /dev/null ) if [ "$?" == "0" ]; then date -u ${TIME} $LOGGER " HTML->System " FEHLER=$? else echo "Der Kontakt zum HTTP-Zeitserver ${HTMLSERVER} war fehlerhaft" FEHLER=3 fi date ;; *) echo "Die Systemzeit darf nicht ueber einen HTMLSERVER aktualisiert werden" FEHLER=2 ;; esac return $FEHLER } allsetsystem(){ ntpsetsystem if [ "$?" != "0" ]; then htmlsetsystem fi if [ "$?" != "0" ]; then echo "Die aktuelle Zeit konnte nicht ermittelt werden" fi } settime(){ if [ "$1" != "" ]; then date $1 if [ "$?" != "0" ]; then echo "Die Zeitangabe $1 ist fehlerhaft!" echo "Um die Uhr auf 23.15 Uhr am 12.02.2005 einzustellen geben Sie bitte ein" echo "/etc/rc.d/rc.systemzeit set 021223152005" fi fi } case $1 in start) biossetsystem ;; stopp) systemsetbios ;; biossetsystem) biossetsystem ;; systemsetbios) systemsetbios ;; ntpsetsystem) ntpsetsystem ;; htmlsetsystem) htmlsetsystem ;; serversetsystem) allsetsystem ;; set) settime $2 ;; *) echo "Benutze start|stop|biossetsystem|systemsetbios|ntpsetsystem|htmlsetsystem|set" ;; esac