scp.sh revision 137015
1137015Sdes#	$OpenBSD: scp.sh,v 1.2 2004/06/16 13:15:09 dtucker Exp $
2137015Sdes#	Placed in the Public Domain.
3137015Sdes
4137015Sdestid="scp"
5137015Sdes
6137015Sdes#set -x
7137015Sdes
8137015Sdes# Figure out if diff understands "-N"
9137015Sdesif diff -N ${SRC}/scp.sh ${SRC}/scp.sh 2>/dev/null; then
10137015Sdes	DIFFOPT="-rN"
11137015Sdeselse
12137015Sdes	DIFFOPT="-r"
13137015Sdesfi
14137015Sdes
15137015SdesDATA=/bin/ls
16137015SdesCOPY=${OBJ}/copy
17137015SdesCOPY2=${OBJ}/copy2
18137015SdesDIR=${COPY}.dd
19137015SdesDIR2=${COPY}.dd2
20137015Sdes
21137015SdesSRC=`dirname ${SCRIPT}`
22137015Sdescp ${SRC}/scp-ssh-wrapper.sh ${OBJ}/scp-ssh-wrapper.exe
23137015Sdeschmod 755 ${OBJ}/scp-ssh-wrapper.exe
24137015Sdesscpopts="-q -S ${OBJ}/scp-ssh-wrapper.exe"
25137015Sdes
26137015Sdesscpclean() {
27137015Sdes	rm -rf ${COPY} ${COPY2} ${DIR} ${DIR2}
28137015Sdes	mkdir ${DIR} ${DIR2}
29137015Sdes}
30137015Sdes
31137015Sdesverbose "$tid: simple copy local file to remote file"
32137015Sdesscpclean
33137015Sdes$SCP $scpopts ${DATA} somehost:${COPY} || fail "copy failed"
34137015Sdescmp ${DATA} ${COPY} || fail "corrupted copy"
35137015Sdes
36137015Sdesverbose "$tid: simple copy remote file to local file"
37137015Sdesscpclean
38137015Sdes$SCP $scpopts somehost:${DATA} ${COPY} || fail "copy failed"
39137015Sdescmp ${DATA} ${COPY} || fail "corrupted copy"
40137015Sdes
41137015Sdesverbose "$tid: simple copy local file to remote dir"
42137015Sdesscpclean
43137015Sdescp ${DATA} ${COPY}
44137015Sdes$SCP $scpopts ${COPY} somehost:${DIR} || fail "copy failed"
45137015Sdescmp ${COPY} ${DIR}/copy || fail "corrupted copy"
46137015Sdes
47137015Sdesverbose "$tid: simple copy remote file to local dir"
48137015Sdesscpclean
49137015Sdescp ${DATA} ${COPY}
50137015Sdes$SCP $scpopts somehost:${COPY} ${DIR} || fail "copy failed"
51137015Sdescmp ${COPY} ${DIR}/copy || fail "corrupted copy"
52137015Sdes
53137015Sdesverbose "$tid: recursive local dir to remote dir"
54137015Sdesscpclean
55137015Sdesrm -rf ${DIR2}
56137015Sdescp ${DATA} ${DIR}/copy
57137015Sdes$SCP $scpopts -r ${DIR} somehost:${DIR2} || fail "copy failed"
58137015Sdesdiff ${DIFFOPT} ${DIR} ${DIR2} || fail "corrupted copy"
59137015Sdes
60137015Sdesverbose "$tid: recursive remote dir to local dir"
61137015Sdesscpclean
62137015Sdesrm -rf ${DIR2}
63137015Sdescp ${DATA} ${DIR}/copy
64137015Sdes$SCP $scpopts -r somehost:${DIR} ${DIR2} || fail "copy failed"
65137015Sdesdiff ${DIFFOPT} ${DIR} ${DIR2} || fail "corrupted copy"
66137015Sdes
67137015Sdesfor i in 0 1 2 3 4; do
68137015Sdes	verbose "$tid: disallow bad server #$i"
69137015Sdes	SCPTESTMODE=badserver_$i
70137015Sdes	export DIR SCPTESTMODE
71137015Sdes	scpclean
72137015Sdes	$SCP $scpopts somehost:${DATA} ${DIR} >/dev/null 2>/dev/null
73137015Sdes	[ -d {$DIR}/rootpathdir ] && fail "allows dir relative to root dir"
74137015Sdes	[ -d ${DIR}/dotpathdir ] && fail "allows dir creation in non-recursive mode"
75137015Sdes
76137015Sdes	scpclean
77137015Sdes	$SCP -r $scpopts somehost:${DATA} ${DIR2} >/dev/null 2>/dev/null
78137015Sdes	[ -d ${DIR}/dotpathdir ] && fail "allows dir creation outside of subdir"
79137015Sdesdone
80137015Sdes
81137015Sdesscpclean
82137015Sdesrm -f ${OBJ}/scp-ssh-wrapper.exe
83