]> andersk Git - openssh.git/blame - regress/test-exec.sh
Add missing regress/envpass.sh
[openssh.git] / regress / test-exec.sh
CommitLineData
099e2052 1# $OpenBSD: test-exec.sh,v 1.19 2004/06/13 15:16:54 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
53e2a65c 50SCP=scp
836d58d7 51
52if [ "x$TEST_SSH_SSH" != "x" ]; then
dd75dc6d 53 SSH="${TEST_SSH_SSH}"
836d58d7 54fi
55if [ "x$TEST_SSH_SSHD" != "x" ]; then
dd75dc6d 56 SSHD="${TEST_SSH_SSHD}"
836d58d7 57fi
58if [ "x$TEST_SSH_SSHAGENT" != "x" ]; then
dd75dc6d 59 SSHAGENT="${TEST_SSH_SSHAGENT}"
836d58d7 60fi
61if [ "x$TEST_SSH_SSHADD" != "x" ]; then
dd75dc6d 62 SSHADD="${TEST_SSH_SSHADD}"
836d58d7 63fi
64if [ "x$TEST_SSH_SSHKEYGEN" != "x" ]; then
dd75dc6d 65 SSHKEYGEN="${TEST_SSH_SSHKEYGEN}"
836d58d7 66fi
67if [ "x$TEST_SSH_SSHKEYSCAN" != "x" ]; then
dd75dc6d 68 SSHKEYSCAN="${TEST_SSH_SSHKEYSCAN}"
836d58d7 69fi
70if [ "x$TEST_SSH_SFTP" != "x" ]; then
dd75dc6d 71 SFTP="${TEST_SSH_SFTP}"
836d58d7 72fi
73if [ "x$TEST_SSH_SFTPSERVER" != "x" ]; then
dd75dc6d 74 SFTPSERVER="${TEST_SSH_SFTPSERVER}"
836d58d7 75fi
53e2a65c 76if [ "x$TEST_SSH_SCP" != "x" ]; then
77 SCP="${TEST_SSH_SCP}"
78fi
836d58d7 79
80# these should be used in tests
53e2a65c 81export SSH SSHD SSHAGENT SSHADD SSHKEYGEN SSHKEYSCAN SFTP SFTPSERVER SCP
82#echo $SSH $SSHD $SSHAGENT $SSHADD $SSHKEYGEN $SSHKEYSCAN $SFTP $SFTPSERVER $SCP
836d58d7 83
84# helper
c7751424 85echon()
86{
87 if [ "x`echo -n`" = "x" ]; then
88 echo -n "$@"
89 elif [ "x`echo '\c'`" = "x" ]; then
90 echo "$@\c"
91 else
92 fatal "Don't know how to echo without newline."
93 fi
94}
95
c1b10a96 96have_prog()
97{
98 saved_IFS="$IFS"
99 IFS=":"
100 for i in $PATH
101 do
102 if [ -x $i/$1 ]; then
103 IFS="$saved_IFS"
104 return 0
105 fi
106 done
107 IFS="$saved_IFS"
108 return 1
109}
110
836d58d7 111cleanup ()
112{
113 if [ -f $PIDFILE ]; then
114 pid=`cat $PIDFILE`
115 if [ "X$pid" = "X" ]; then
116 echo no sshd running
117 else
118 if [ $pid -lt 2 ]; then
119 echo bad pid for ssd: $pid
120 else
121 $SUDO kill $pid
122 fi
123 fi
124 fi
125}
126
127trace ()
128{
129 if [ "X$TEST_SSH_TRACE" = "Xyes" ]; then
130 echo "$@"
131 fi
132}
133
134verbose ()
135{
136 if [ "X$TEST_SSH_QUIET" != "Xyes" ]; then
137 echo "$@"
138 fi
139}
140
141
142fail ()
143{
144 RESULT=1
145 echo "$@"
146}
147
148fatal ()
149{
c7751424 150 echon "FATAL: "
836d58d7 151 fail "$@"
152 cleanup
153 exit $RESULT
154}
155
156RESULT=0
157PIDFILE=$OBJ/pidfile
158
159trap fatal 3 2
160
161# create server config
162cat << EOF > $OBJ/sshd_config
163 Port $PORT
164 ListenAddress 127.0.0.1
165 #ListenAddress ::1
166 PidFile $PIDFILE
167 AuthorizedKeysFile $OBJ/authorized_keys_%u
168 LogLevel QUIET
1b0a92c0 169 AcceptEnv _XXX_TEST_*
170 AcceptEnv _XXX_TEST
00995aa0 171 Subsystem sftp $SFTPSERVER
4638d96a 172 StrictModes no
836d58d7 173EOF
174
175# server config for proxy connects
176cp $OBJ/sshd_config $OBJ/sshd_proxy
177
178# allow group-writable directories in proxy-mode
179echo 'StrictModes no' >> $OBJ/sshd_proxy
180
181# create client config
182cat << EOF > $OBJ/ssh_config
183Host *
184 Hostname 127.0.0.1
185 HostKeyAlias localhost-with-alias
186 Port $PORT
187 User $USER
188 GlobalKnownHostsFile $OBJ/known_hosts
189 UserKnownHostsFile $OBJ/known_hosts
190 RSAAuthentication yes
191 PubkeyAuthentication yes
192 ChallengeResponseAuthentication no
193 HostbasedAuthentication no
194 PasswordAuthentication no
836d58d7 195 RhostsRSAAuthentication no
196 BatchMode yes
197 StrictHostKeyChecking yes
198EOF
199
200rm -f $OBJ/known_hosts $OBJ/authorized_keys_$USER
201
202trace "generate keys"
203for t in rsa rsa1; do
204 # generate user key
205 rm -f $OBJ/$t
206 ${SSHKEYGEN} -q -N '' -t $t -f $OBJ/$t ||\
207 fail "ssh-keygen for $t failed"
208
209 # known hosts file for client
210 (
c7751424 211 echon 'localhost-with-alias,127.0.0.1,::1 '
836d58d7 212 cat $OBJ/$t.pub
213 ) >> $OBJ/known_hosts
214
215 # setup authorized keys
216 cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER
217 echo IdentityFile $OBJ/$t >> $OBJ/ssh_config
218
219 # use key as host key, too
220 $SUDO cp $OBJ/$t $OBJ/host.$t
221 echo HostKey $OBJ/host.$t >> $OBJ/sshd_config
222
223 # don't use SUDO for proxy connect
224 echo HostKey $OBJ/$t >> $OBJ/sshd_proxy
225done
226chmod 644 $OBJ/authorized_keys_$USER
227
228# create a proxy version of the client config
229(
230 cat $OBJ/ssh_config
4638d96a 231 echo proxycommand ${SUDO} ${SSHD} -i -f $OBJ/sshd_proxy
836d58d7 232) > $OBJ/ssh_proxy
233
234# check proxy config
235${SSHD} -t -f $OBJ/sshd_proxy || fatal "sshd_proxy broken"
236
237start_sshd ()
238{
239 # start sshd
240 $SUDO ${SSHD} -f $OBJ/sshd_config -t || fatal "sshd_config broken"
241 $SUDO ${SSHD} -f $OBJ/sshd_config
242
243 trace "wait for sshd"
244 i=0;
4638d96a 245 while [ ! -f $PIDFILE -a $i -lt 10 ]; do
836d58d7 246 i=`expr $i + 1`
247 sleep $i
248 done
249
250 test -f $PIDFILE || fatal "no sshd running on port $PORT"
251}
252
253# source test body
254. $SCRIPT
255
256# kill sshd
257cleanup
258if [ $RESULT -eq 0 ]; then
259 verbose ok $tid
260else
261 echo failed $tid
262fi
263exit $RESULT
This page took 0.142744 seconds and 5 git commands to generate.