]> andersk Git - gssapi-openssh.git/blame - openssh/regress/test-exec.sh
Import of OpenSSH 3.7p1
[gssapi-openssh.git] / openssh / regress / test-exec.sh
CommitLineData
700318f3 1# $OpenBSD: test-exec.sh,v 1.14 2002/04/15 15:19:48 markus Exp $
2# Placed in the Public Domain.
3
4PORT=4242
700318f3 5#SUDO=sudo
6
0fff78ff 7if [ -x /usr/ucb/whoami ]; then
8 USER=`/usr/ucb/whoami`
9elif whoami >/dev/null 2>&1; then
10 USER=`whoami`
11else
12 USER=`id -un`
13fi
14
700318f3 15OBJ=$1
16if [ "x$OBJ" = "x" ]; then
17 echo '$OBJ not defined'
18 exit 2
19fi
20if [ ! -d $OBJ ]; then
21 echo "not a directory: $OBJ"
22 exit 2
23fi
24SCRIPT=$2
25if [ "x$SCRIPT" = "x" ]; then
26 echo '$SCRIPT not defined'
27 exit 2
28fi
29if [ ! -f $SCRIPT ]; then
30 echo "not a file: $SCRIPT"
31 exit 2
32fi
33if sh -n $SCRIPT; then
34 true
35else
36 echo "syntax error in $SCRIPT"
37 exit 2
38fi
39unset SSH_AUTH_SOCK
40
41# defaults
42SSH=ssh
43SSHD=sshd
44SSHAGENT=ssh-agent
45SSHADD=ssh-add
46SSHKEYGEN=ssh-keygen
47SSHKEYSCAN=ssh-keyscan
48SFTP=sftp
49SFTPSERVER=/usr/libexec/openssh/sftp-server
50
51if [ "x$TEST_SSH_SSH" != "x" ]; then
52 SSH=${TEST_SSH_SSH}
53fi
54if [ "x$TEST_SSH_SSHD" != "x" ]; then
55 SSHD=${TEST_SSH_SSHD}
56fi
57if [ "x$TEST_SSH_SSHAGENT" != "x" ]; then
58 SSHAGENT=${TEST_SSH_SSHAGENT}
59fi
60if [ "x$TEST_SSH_SSHADD" != "x" ]; then
61 SSHADD=${TEST_SSH_SSHADD}
62fi
63if [ "x$TEST_SSH_SSHKEYGEN" != "x" ]; then
64 SSHKEYGEN=${TEST_SSH_SSHKEYGEN}
65fi
66if [ "x$TEST_SSH_SSHKEYSCAN" != "x" ]; then
67 SSHKEYSCAN=${TEST_SSH_SSHKEYSCAN}
68fi
69if [ "x$TEST_SSH_SFTP" != "x" ]; then
70 SFTP=${TEST_SSH_SFTP}
71fi
72if [ "x$TEST_SSH_SFTPSERVER" != "x" ]; then
73 SFTPSERVER=${TEST_SSH_SFTPSERVER}
74fi
75
76# these should be used in tests
77export SSH SSHD SSHAGENT SSHADD SSHKEYGEN SSHKEYSCAN SFTP SFTPSERVER
78#echo $SSH $SSHD $SSHAGENT $SSHADD $SSHKEYGEN $SSHKEYSCAN $SFTP $SFTPSERVER
79
80# helper
0fff78ff 81echon()
82{
83 if [ "x`echo -n`" = "x" ]; then
84 echo -n "$@"
85 elif [ "x`echo '\c'`" = "x" ]; then
86 echo "$@\c"
87 else
88 fatal "Don't know how to echo without newline."
89 fi
90}
91
92have_prog()
93{
94 saved_IFS="$IFS"
95 IFS=":"
96 for i in $PATH
97 do
98 if [ -x $i/$1 ]; then
99 IFS="$saved_IFS"
100 return 0
101 fi
102 done
103 IFS="$saved_IFS"
104 return 1
105}
106
700318f3 107cleanup ()
108{
109 if [ -f $PIDFILE ]; then
110 pid=`cat $PIDFILE`
111 if [ "X$pid" = "X" ]; then
112 echo no sshd running
113 else
114 if [ $pid -lt 2 ]; then
115 echo bad pid for ssd: $pid
116 else
117 $SUDO kill $pid
118 fi
119 fi
120 fi
121}
122
123trace ()
124{
125 if [ "X$TEST_SSH_TRACE" = "Xyes" ]; then
126 echo "$@"
127 fi
128}
129
130verbose ()
131{
132 if [ "X$TEST_SSH_QUIET" != "Xyes" ]; then
133 echo "$@"
134 fi
135}
136
137
138fail ()
139{
140 RESULT=1
141 echo "$@"
142}
143
144fatal ()
145{
0fff78ff 146 echon "FATAL: "
700318f3 147 fail "$@"
148 cleanup
149 exit $RESULT
150}
151
152RESULT=0
153PIDFILE=$OBJ/pidfile
154
155trap fatal 3 2
156
157# create server config
158cat << EOF > $OBJ/sshd_config
159 Port $PORT
160 ListenAddress 127.0.0.1
161 #ListenAddress ::1
162 PidFile $PIDFILE
163 AuthorizedKeysFile $OBJ/authorized_keys_%u
164 LogLevel QUIET
0fff78ff 165 StrictModes no
700318f3 166EOF
167
168# server config for proxy connects
169cp $OBJ/sshd_config $OBJ/sshd_proxy
170
171# allow group-writable directories in proxy-mode
172echo 'StrictModes no' >> $OBJ/sshd_proxy
173
174# create client config
175cat << EOF > $OBJ/ssh_config
176Host *
177 Hostname 127.0.0.1
178 HostKeyAlias localhost-with-alias
179 Port $PORT
180 User $USER
181 GlobalKnownHostsFile $OBJ/known_hosts
182 UserKnownHostsFile $OBJ/known_hosts
183 RSAAuthentication yes
184 PubkeyAuthentication yes
185 ChallengeResponseAuthentication no
186 HostbasedAuthentication no
187 PasswordAuthentication no
188 RhostsAuthentication no
189 RhostsRSAAuthentication no
190 BatchMode yes
191 StrictHostKeyChecking yes
192EOF
193
194rm -f $OBJ/known_hosts $OBJ/authorized_keys_$USER
195
196trace "generate keys"
197for t in rsa rsa1; do
198 # generate user key
199 rm -f $OBJ/$t
200 ${SSHKEYGEN} -q -N '' -t $t -f $OBJ/$t ||\
201 fail "ssh-keygen for $t failed"
202
203 # known hosts file for client
204 (
0fff78ff 205 echon 'localhost-with-alias,127.0.0.1,::1 '
700318f3 206 cat $OBJ/$t.pub
207 ) >> $OBJ/known_hosts
208
209 # setup authorized keys
210 cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER
211 echo IdentityFile $OBJ/$t >> $OBJ/ssh_config
212
213 # use key as host key, too
214 $SUDO cp $OBJ/$t $OBJ/host.$t
215 echo HostKey $OBJ/host.$t >> $OBJ/sshd_config
216
217 # don't use SUDO for proxy connect
218 echo HostKey $OBJ/$t >> $OBJ/sshd_proxy
219done
220chmod 644 $OBJ/authorized_keys_$USER
221
222# create a proxy version of the client config
223(
224 cat $OBJ/ssh_config
0fff78ff 225 echo proxycommand ${SUDO} ${SSHD} -i -f $OBJ/sshd_proxy
700318f3 226) > $OBJ/ssh_proxy
227
228# check proxy config
229${SSHD} -t -f $OBJ/sshd_proxy || fatal "sshd_proxy broken"
230
231start_sshd ()
232{
233 # start sshd
234 $SUDO ${SSHD} -f $OBJ/sshd_config -t || fatal "sshd_config broken"
235 $SUDO ${SSHD} -f $OBJ/sshd_config
236
237 trace "wait for sshd"
238 i=0;
0fff78ff 239 while [ ! -f $PIDFILE -a $i -lt 10 ]; do
700318f3 240 i=`expr $i + 1`
241 sleep $i
242 done
243
244 test -f $PIDFILE || fatal "no sshd running on port $PORT"
245}
246
247# source test body
248. $SCRIPT
249
250# kill sshd
251cleanup
252if [ $RESULT -eq 0 ]; then
253 verbose ok $tid
254else
255 echo failed $tid
256fi
257exit $RESULT
This page took 0.702889 seconds and 5 git commands to generate.