summaryrefslogtreecommitdiffstats
path: root/time_wizard/scripts/test_timeservers.sh
blob: 3b45dcd377a77626edd1c71ae0936f4d3945bab5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/bin/bash
# 
# Wizard
#
# Copyright (C) 2000 Mandrakesoft.
# 
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# See file LICENSE for further informations on licensing terms.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
# 
# Authors: Jerome Dumonteil, Maurizio De Cecco, Enzo Maggi
# icons: Helene Durosini <ln@mandrakesoft.com>
# <corporate@mandrakesoft.com> http://www.mandrakesoft.com

# This script perform a test of the time servers whose names
# can be found into the variables
# - $server1
# - $typedserver1
# - $server2
# - $typesserver2
# The typed variables have precedence over the fixed, if they are not empty.
# This test  (ntpdate...) have a fixed timeout.
# If the test succeeds, it calls the script save_config.sh and then outputs 'ciao'
# else, it outputs 'server_not_responding'

echo_debug "$(date)= begin $0"

tout=30
typeset -i i

if [ -n "${typedserver1}" ]; then
    tserver1=${typedserver1}
else
    tserver1=${server1}
fi

if [ -n "${typedserver2}" ]; then
    tserver2=${typedserver2}
else
    tserver2=${server2}
fi

echo_debug "tserver1=${tserver1} tserver2=${tserver2}"

if [ -x /usr/sbin/ntpdate ] && [ -n "${tserver1}" -o -n "${tserver2}" ]; then
    echo_debug "launching /usr/sbin/ntpdate -q ${tserver1} ${tserver2}"
    TMPFILE=`mktemp -q /tmp/tmwiz.XXXXXX`
    if [ $? -ne 0 ];then
        echo_debug "$0 cant create tmpfile, exit 1"
	exit 1
    fi

    /usr/sbin/ntpdate -q ${tserver1} ${tserver2} > ${TMPFILE} 2>&1 &

    pid=$!
    echo_debug "pid du process : ${pid}"
    i=0
    ok=0
    while [ $ok -eq 0 ]; do
        if [ `ps h ${pid} | wc -l` -eq 1 ]; then
	    i=i+1
            echo_debug "still running $i"
	    if [ $i -ge ${tout} ]; then
	        kill ${pid} >/dev/null 2>&1
		echo_debug "killing process"
		echo_debug "server_not_responding"
	        exit 1                
	    else
	        sleep 1
	    fi
	else
            echo_debug "ok end loop"
	    ok=1
	fi	
    done
# time server found?

    if [ `grep -c "no servers can be used" ${TMPFILE}` -ne 0 ];then     
        echo_debug "bad server"
        echo_debug "$(cat ${TMPFILE})"
    else        
        echo_debug "launching exec __WIZ_HOME__/time_wizard/scripts/save_config.sh"
	__WIZ_HOME__/time_wizard/scripts/save_config.sh	
        echo_debug "exiting saying   ciao"
	rm -f ${TMPFILE}
	exit 2
    fi
fi

# some problem :
rm -f ${TMPFILE}
echo_debug "server_not_responding"
exit 1