]> andersk Git - openssh.git/blame - regress/test-exec.sh
- djm@cvs.openbsd.org 2004/04/27 09:47:30
[openssh.git] / regress / test-exec.sh
CommitLineData
1b0a92c0 1# $OpenBSD: test-exec.sh,v 1.16 2004/04/27 09:47:30 djm Exp $
836d58d7 2# Placed in the Public Domain.
3
4PORT=4242
836d58d7 5#SUDO=sudo
6
4638d96a 7if [ -x /usr/ucb/whoami ]; then
8 USER=`/usr/ucb/whoami`
c1b10a96 9elif whoami >/dev/null 2>&1; then
4638d96a 10 USER=`whoami`
11else
12 USER=`id -un`
13fi
14
836d58d7 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
006cb311 33if $TEST_SHELL -n $SCRIPT; then
836d58d7 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
dd75dc6d 52 SSH="${TEST_SSH_SSH}"
836d58d7 53fi
54if [ "x$TEST_SSH_SSHD" != "x" ]; then
dd75dc6d 55 SSHD="${TEST_SSH_SSHD}"
836d58d7 56fi
57if [ "x$TEST_SSH_SSHAGENT" != "x" ]; then
dd75dc6d 58 SSHAGENT="${TEST_SSH_SSHAGENT}"
836d58d7 59fi
60if [ "x$TEST_SSH_SSHADD" != "x" ]; then
dd75dc6d 61 SSHADD="${TEST_SSH_SSHADD}"
836d58d7 62fi
63if [ "x$TEST_SSH_SSHKEYGEN" != "x" ]; then
dd75dc6d 64 SSHKEYGEN="${TEST_SSH_SSHKEYGEN}"
836d58d7 65fi
66if [ "x$TEST_SSH_SSHKEYSCAN" != "x" ]; then
dd75dc6d 67 SSHKEYSCAN="${TEST_SSH_SSHKEYSCAN}"
836d58d7 68fi
69if [ "x$TEST_SSH_SFTP" != "x" ]; then
dd75dc6d 70 SFTP="${TEST_SSH_SFTP}"
836d58d7 71fi
72if [ "x$TEST_SSH_SFTPSERVER" != "x" ]; then
dd75dc6d 73 SFTPSERVER="${TEST_SSH_SFTPSERVER}"
836d58d7 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
c7751424 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
c1b10a96 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
836d58d7 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{
c7751424 146 echon "FATAL: "
836d58d7 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
1b0a92c0 165 AcceptEnv _XXX_TEST_*
166 AcceptEnv _XXX_TEST
4638d96a 167 StrictModes no
836d58d7 168EOF
169
170# server config for proxy connects
171cp $OBJ/sshd_config $OBJ/sshd_proxy
172
173# allow group-writable directories in proxy-mode
174echo 'StrictModes no' >> $OBJ/sshd_proxy
175
176# create client config
177cat << EOF > $OBJ/ssh_config
178Host *
179 Hostname 127.0.0.1
180 HostKeyAlias localhost-with-alias
181 Port $PORT
182 User $USER
183 GlobalKnownHostsFile $OBJ/known_hosts
184 UserKnownHostsFile $OBJ/known_hosts
185 RSAAuthentication yes
186 PubkeyAuthentication yes
187 ChallengeResponseAuthentication no
188 HostbasedAuthentication no
189 PasswordAuthentication no
836d58d7 190 RhostsRSAAuthentication no
191 BatchMode yes
192 StrictHostKeyChecking yes
193EOF
194
195rm -f $OBJ/known_hosts $OBJ/authorized_keys_$USER
196
197trace "generate keys"
198for t in rsa rsa1; do
199 # generate user key
200 rm -f $OBJ/$t
201 ${SSHKEYGEN} -q -N '' -t $t -f $OBJ/$t ||\
202 fail "ssh-keygen for $t failed"
203
204 # known hosts file for client
205 (
c7751424 206 echon 'localhost-with-alias,127.0.0.1,::1 '
836d58d7 207 cat $OBJ/$t.pub
208 ) >> $OBJ/known_hosts
209
210 # setup authorized keys
211 cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER
212 echo IdentityFile $OBJ/$t >> $OBJ/ssh_config
213
214 # use key as host key, too
215 $SUDO cp $OBJ/$t $OBJ/host.$t
216 echo HostKey $OBJ/host.$t >> $OBJ/sshd_config
217
218 # don't use SUDO for proxy connect
219 echo HostKey $OBJ/$t >> $OBJ/sshd_proxy
220done
221chmod 644 $OBJ/authorized_keys_$USER
222
223# create a proxy version of the client config
224(
225 cat $OBJ/ssh_config
4638d96a 226 echo proxycommand ${SUDO} ${SSHD} -i -f $OBJ/sshd_proxy
836d58d7 227) > $OBJ/ssh_proxy
228
229# check proxy config
230${SSHD} -t -f $OBJ/sshd_proxy || fatal "sshd_proxy broken"
231
232start_sshd ()
233{
234 # start sshd
235 $SUDO ${SSHD} -f $OBJ/sshd_config -t || fatal "sshd_config broken"
236 $SUDO ${SSHD} -f $OBJ/sshd_config
237
238 trace "wait for sshd"
239 i=0;
4638d96a 240 while [ ! -f $PIDFILE -a $i -lt 10 ]; do
836d58d7 241 i=`expr $i + 1`
242 sleep $i
243 done
244
245 test -f $PIDFILE || fatal "no sshd running on port $PORT"
246}
247
248# source test body
249. $SCRIPT
250
251# kill sshd
252cleanup
253if [ $RESULT -eq 0 ]; then
254 verbose ok $tid
255else
256 echo failed $tid
257fi
258exit $RESULT
This page took 0.181889 seconds and 5 git commands to generate.