blob: c19c0fe174c97bfdd010061d2371020adc16d6a0 [file] [log] [blame]
Damien Millere826a8c2004-06-18 01:23:03 +10001# $OpenBSD: multiplex.sh,v 1.6 2004/06/17 14:53:27 djm Exp $
Darren Tuckere7d05832004-06-16 20:22:22 +10002# Placed in the Public Domain.
3
4CTL=$OBJ/ctl-sock
5
6tid="connection multiplexing"
7
Darren Tucker10e7f192004-06-17 16:36:27 +10008DATA=/bin/ls${EXEEXT}
Darren Tuckerffaa6a52004-06-17 16:32:45 +10009COPY=$OBJ/ls.copy
10
Darren Tuckere7d05832004-06-16 20:22:22 +100011start_sshd
12
13trace "start master, fork to background"
Damien Millere826a8c2004-06-18 01:23:03 +100014${SSH} -2 -MS$CTL -F $OBJ/ssh_config -oSendEnv="_XXX_TEST" -f somehost \
15 sleep 120
Darren Tuckere7d05832004-06-16 20:22:22 +100016
Damien Millere826a8c2004-06-18 01:23:03 +100017verbose "test $tid: envpass"
18trace "env passing over multiplexed connection"
19_XXX_TEST=blah ${SSH} -S$CTL otherhost '[ "x$_XXX_TEST" = "xblah" ]'
20if [ $? -ne 0 ]; then
21 fail "environment not found"
22fi
23
24verbose "test $tid: transfer"
Darren Tuckerffaa6a52004-06-17 16:32:45 +100025rm -f ${COPY}
Darren Tuckere7d05832004-06-16 20:22:22 +100026trace "ssh transfer over multiplexed connection and check result"
Darren Tuckerffaa6a52004-06-17 16:32:45 +100027${SSH} -S$CTL otherhost cat ${DATA} > ${COPY}
Darren Tucker3e86fc42004-06-17 16:34:02 +100028test -f ${COPY} || fail "ssh -Sctl: failed copy ${DATA}"
29cmp ${DATA} ${COPY} || fail "ssh -Sctl: corrupted copy of ${DATA}"
Darren Tuckere7d05832004-06-16 20:22:22 +100030
Darren Tuckerffaa6a52004-06-17 16:32:45 +100031rm -f ${COPY}
Darren Tuckere7d05832004-06-16 20:22:22 +100032trace "ssh transfer over multiplexed connection and check result"
Darren Tuckerffaa6a52004-06-17 16:32:45 +100033${SSH} -S $CTL otherhost cat ${DATA} > ${COPY}
Darren Tucker3e86fc42004-06-17 16:34:02 +100034test -f ${COPY} || fail "ssh -S ctl: failed copy ${DATA}"
35cmp ${DATA} ${COPY} || fail "ssh -S ctl: corrupted copy of ${DATA}"
Darren Tuckere7d05832004-06-16 20:22:22 +100036
Darren Tuckerffaa6a52004-06-17 16:32:45 +100037rm -f ${COPY}
Darren Tuckere7d05832004-06-16 20:22:22 +100038trace "sftp transfer over multiplexed connection and check result"
Darren Tuckerffaa6a52004-06-17 16:32:45 +100039echo "get ${DATA} ${COPY}" | \
Darren Tucker5711dca2004-06-16 23:23:50 +100040 ${SFTP} -oControlPath=$CTL otherhost >/dev/null 2>&1
Darren Tucker3e86fc42004-06-17 16:34:02 +100041test -f ${COPY} || fail "sftp: failed copy ${DATA}"
42cmp ${DATA} ${COPY} || fail "sftp: corrupted copy of ${DATA}"
Darren Tuckere7d05832004-06-16 20:22:22 +100043
Darren Tuckerffaa6a52004-06-17 16:32:45 +100044rm -f ${COPY}
Darren Tuckere7d05832004-06-16 20:22:22 +100045trace "scp transfer over multiplexed connection and check result"
Darren Tuckerffaa6a52004-06-17 16:32:45 +100046${SCP} -oControlPath=$CTL otherhost:${DATA} ${COPY} >/dev/null 2>&1
Darren Tucker3e86fc42004-06-17 16:34:02 +100047test -f ${COPY} || fail "scp: failed copy ${DATA}"
48cmp ${DATA} ${COPY} || fail "scp: corrupted copy of ${DATA}"
Darren Tuckere7d05832004-06-16 20:22:22 +100049
Darren Tuckerffaa6a52004-06-17 16:32:45 +100050rm -f ${COPY}
Darren Tuckerddea13d2004-06-17 16:27:43 +100051
Darren Tuckere7d05832004-06-16 20:22:22 +100052for s in 0 1 4 5 44; do
53 trace "exit status $s over multiplexed connection"
54 verbose "test $tid: status $s"
55 ${SSH} -S $CTL otherhost exit $s
56 r=$?
57 if [ $r -ne $s ]; then
58 fail "exit code mismatch for protocol $p: $r != $s"
59 fi
60
61 # same with early close of stdout/err
62 trace "exit status $s with early close over multiplexed connection"
63 ${SSH} -S $CTL -n otherhost \
64 exec sh -c \'"sleep 2; exec > /dev/null 2>&1; sleep 3; exit $s"\'
65 r=$?
66 if [ $r -ne $s ]; then
67 fail "exit code (with sleep) mismatch for protocol $p: $r != $s"
68 fi
69done
70
Darren Tuckerddea13d2004-06-17 16:27:43 +100071# kill master, remove control socket. ssh -MS will exit when sleep exits
72$SUDO kill `cat $PIDFILE`
73rm -f $CTL