]> andersk Git - openssh.git/blame - regress/test-exec.sh
[Makefile.in regress/sftp-badcmds.sh regress/test-exec.sh]
[openssh.git] / regress / test-exec.sh
CommitLineData
836d58d7 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
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
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
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
4638d96a 165 StrictModes no
836d58d7 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
836d58d7 188 RhostsRSAAuthentication no
189 BatchMode yes
190 StrictHostKeyChecking yes
191EOF
192
193rm -f $OBJ/known_hosts $OBJ/authorized_keys_$USER
194
195trace "generate keys"
196for t in rsa rsa1; do
197 # generate user key
198 rm -f $OBJ/$t
199 ${SSHKEYGEN} -q -N '' -t $t -f $OBJ/$t ||\
200 fail "ssh-keygen for $t failed"
201
202 # known hosts file for client
203 (
c7751424 204 echon 'localhost-with-alias,127.0.0.1,::1 '
836d58d7 205 cat $OBJ/$t.pub
206 ) >> $OBJ/known_hosts
207
208 # setup authorized keys
209 cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER
210 echo IdentityFile $OBJ/$t >> $OBJ/ssh_config
211
212 # use key as host key, too
213 $SUDO cp $OBJ/$t $OBJ/host.$t
214 echo HostKey $OBJ/host.$t >> $OBJ/sshd_config
215
216 # don't use SUDO for proxy connect
217 echo HostKey $OBJ/$t >> $OBJ/sshd_proxy
218done
219chmod 644 $OBJ/authorized_keys_$USER
220
221# create a proxy version of the client config
222(
223 cat $OBJ/ssh_config
4638d96a 224 echo proxycommand ${SUDO} ${SSHD} -i -f $OBJ/sshd_proxy
836d58d7 225) > $OBJ/ssh_proxy
226
227# check proxy config
228${SSHD} -t -f $OBJ/sshd_proxy || fatal "sshd_proxy broken"
229
230start_sshd ()
231{
232 # start sshd
233 $SUDO ${SSHD} -f $OBJ/sshd_config -t || fatal "sshd_config broken"
234 $SUDO ${SSHD} -f $OBJ/sshd_config
235
236 trace "wait for sshd"
237 i=0;
4638d96a 238 while [ ! -f $PIDFILE -a $i -lt 10 ]; do
836d58d7 239 i=`expr $i + 1`
240 sleep $i
241 done
242
243 test -f $PIDFILE || fatal "no sshd running on port $PORT"
244}
245
246# source test body
247. $SCRIPT
248
249# kill sshd
250cleanup
251if [ $RESULT -eq 0 ]; then
252 verbose ok $tid
253else
254 echo failed $tid
255fi
256exit $RESULT
This page took 0.684794 seconds and 5 git commands to generate.