Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12:Update
ntp.2702
conf.start-ntpd
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File conf.start-ntpd of Package ntp.2702
#!/bin/bash # Copyright (c) 1995-2014 SuSE Linux AG, Nuernberg, Germany. # All rights reserved. # # Author: Peter Varkoly # set default options NTP_CONF="/etc/ntp.conf" if [ ! -f ${NTP_CONF} ]; then echo -n "Time server configuration file, ${NTP_CONF} does not exist." exit 6 fi NTPD_BIN="/usr/sbin/ntpd" if [ ! -x ${NTPD_BIN} ]; then echo -n "Time server, ${NTPD_BIN} not installed!" exit 5 fi NTPD_OPTIONS="-g -u ntp:ntp" NTPD_RUN_CHROOTED="yes" NTPQ_BIN="/usr/sbin/ntpq" NTP_KEYS=$(awk '/^keys[[:blank:]]/ { print $2; exit }' $NTP_CONF) NTP_KEYID=$(awk '/^controlkey[[:blank:]]/ { print $2; exit }' $NTP_CONF) if test -n "$NTP_KEYS" -a -n "$NTP_KEYID" -a -r "$NTP_KEYS"; then NTP_KEYTYPE=$(awk '$1 == "'$NTP_KEYID'"{ print $2 }' $NTP_KEYS) NTP_PASSWD=$(awk '$1 == "'$NTP_KEYID'"{ print $3 }' $NTP_KEYS) fi if [ -n "$NTP_KEYS" ]; then if test -z "$NTP_KEYID"; then echo -n "NTP key id not defined" exit 5 fi if test -z "$NTP_PASSWD"; then echo -n "No password for controlkey set" exit 1 fi fi # Override defaults, if we have the sysconfig file test -f /etc/sysconfig/ntp && . /etc/sysconfig/ntp function update_cmos() { return 0; } # Now see if we have to fix the CMOS clock if [ "$NTPD_FORCE_SYNC_ON_STARTUP" = yes -a "$1" = ntptimeset ] ; then test -f /etc/sysconfig/clock && . /etc/sysconfig/clock if test -r /proc/xen/capabilities ; then read -t1 caps < /proc/xen/capabilities test "$caps" = "${caps%control_d*}" && NTPD_FORCE_SYNC_HWCLOCK_ON_STARTUP=no fi case "$(uname -i)" in s390*) NTPD_FORCE_SYNC_HWCLOCK_ON_STARTUP=no esac if [ "$NTPD_FORCE_SYNC_HWCLOCK_ON_STARTUP" = yes ] ; then function update_cmos() { if test -e /dev/rtc ; then /sbin/hwclock --systohc $HWCLOCK return $? fi if test -z "$(/sbin/modprobe -l rtc_cmos)" ; then /sbin/hwclock --systohc $HWCLOCK return $? fi local temprules=/dev/.udev/rules.d local uevseqnum=/sys/kernel/uevent_seqnum local rule=$temprules/95-rtc-cmos.rules local -i start=0 end=0 /bin/mkdir -m 0755 -p $temprules echo ACTION==\"add\", KERNEL==\"rtc0\", RUN=\"/sbin/hwclock --systohc $HWCLOCK --rtc=\$env{DEVNAME}\" > $rule test -e $uevseqnum && read -t 1 start < $uevseqnum if /sbin/modprobe -q rtc_cmos ; then test -e $uevseqnum && read -t 1 end < $uevseqnum if test $start -lt $end ; then /sbin/udevadm settle --quiet --seq-start=$start --seq-end=$end else /sbin/udevadm settle --quiet fi else rm -f $rule /sbin/hwclock --systohc $HWCLOCK fi } fi fi # set Default CHROOT path if not set but wanted test "${NTPD_RUN_CHROOTED}" = "yes" && \ CHROOT_PREFIX="/var/lib/ntp" || \ CHROOT_PREFIX="" # set default PID variables NTPD_PID="${CHROOT_PREFIX}/var/run/ntp/ntpd.pid" # Create if /var/run is on tmpfs test -e /var/run/ntp || ln -s /var/lib/ntp/var/run/ntp /var/run function ntpd_is_running() { service ntpd status >/dev/null } function parse_symlink() { if [ -c "$NTP_PARSE_DEVICE" ]; then if [ -n "$NTP_PARSE_LINK" ]; then ln -sf $NTP_PARSE_DEVICE $NTP_PARSE_LINK fi fi } function prepare_chroot() { for configfile in /etc/{localtime,ntp.keys} $NTP_CONF $NTPD_CHROOT_FILES; do test -d ${CHROOT_PREFIX}${configfile%/*} || mkdir -p ${CHROOT_PREFIX}${configfile%/*} if [ -r ${configfile} ] then cp -aL ${configfile} ${CHROOT_PREFIX}${configfile%/*} else echo echo "Warning: ${configfile} not found or not readable" fi done mkdir -p ${CHROOT_PREFIX}/var/log mkdir -p ${CHROOT_PREFIX}/proc mount -t proc none -o ro,nosuid,nodev "${CHROOT_PREFIX}/proc" 2>/dev/null NTPD_OPTIONS="${NTPD_OPTIONS} -i ${CHROOT_PREFIX}" } function runtime_configuration() { for f in /var/run/ntp/servers*; do if [ -r ${f} ]; then . ${f} ntp_server="${ntp_server} ${RUNTIME_SERVERS}" fi done if [ -n "${ntp_server}" ]; then for s in ${ntp_server}; do add_runtime_server ${s} done fi } function add_runtime_server() { [ "$NTPD_FORCE_SYNC_HWCLOCK_ON_STARTUP" = "yes" ] && /usr/sbin/sntp -S -c $@ NTPC_CMD="keytype $NTP_KEYTYPE\nkeyid $NTP_KEYID\npasswd $NTP_PASSWD\n:config server $@\n" NTPQ_LOG=$(echo -e "${NTPC_CMD}quit" | $NTPQ_BIN) logger -t $0 "runtime configuration: server $@" } function get_ntpd_ip_proto() { local -a OPTS read -ra OPTS <<< "$NTPD_OPTIONS" for i in "${OPTS[@]}"; do if [ "$i" = "-4" ] || [ "$i" = "-6" ]; then # first occurrence wins safely because ntpd couldn't handle more anyway echo "$i" return fi done echo "" return } case "$1" in start) if [ "$NTPD_FORCE_SYNC_ON_STARTUP" = "yes" ]; then # get the initial date from the timeservers configured in ntp.conf ntpd_is_running || $0 ntptimeset fi echo -n "Starting network time protocol daemon (NTPD)" # do we need a refclock symlink? parse_symlink # do we run chrooted? test "${NTPD_RUN_CHROOTED}" = "yes" && prepare_chroot $NTPD_BIN -p ${NTPD_PID#${CHROOT_PREFIX}} $NTPD_OPTIONS -c $NTP_CONF if [ -n "${NTP_KEYS}" ]; then runtime_configuration fi ;; addserver) if [ -z "${NTP_KEYS}" ]; then echo "Runtime configuration disabled, no key file specified." exit 1 fi if test $# -lt 2; then echo "No servers to add specified" exit 1 fi shift service ntpd status 2>&1 >/dev/null if test $? = 0; then add_runtime_server "$@" fi ;; ntptimeset) NTPD_PROTO="$( get_ntpd_ip_proto )" while read arg1 arg2 arg3 dummy do test "$arg1" = "server" || continue if [ "$arg2" = "-4" -o "$arg2" = "-6" ] then srv="$arg3" proto="$arg2" args="$arg2 $arg3" else srv="$arg2" proto="" args="$arg2" fi # ignore servers with conflicting IP version test -n "$NTP_PROTO" -a "NTPD_PROTO" != "$proto" && continue # ignore hardware clock drivers test "${srv#127.127.}" != "$srv" && continue if /usr/sbin/sntp -S -c $args &> /dev/null then SYNCHRONISED=$srv break fi done < /etc/ntp.conf if [ "$SYNCHRONISED" ] then echo "Time synchronized with $SYNCHRONISED" update_cmos else echo "Time could not be synchronized" fi ;; *) echo "Usage: $0 {start|addserver|ntptimeset}" exit 1 ;; esac
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor