xref: /freebsd/crypto/openssh/regress/sftp-cmds.sh (revision 38a52bd3b5cac3da6f7f6eef3dd050e6aa08ebb3)
1*38a52bd3SEd Maste#	$OpenBSD: sftp-cmds.sh,v 1.15 2022/03/31 03:07:33 djm Exp $
2ce3adf43SDag-Erling Smørgrav#	Placed in the Public Domain.
3ce3adf43SDag-Erling Smørgrav
4ce3adf43SDag-Erling Smørgrav# XXX - TODO:
5ce3adf43SDag-Erling Smørgrav# - chmod / chown / chgrp
6ce3adf43SDag-Erling Smørgrav# - -p flag for get & put
7ce3adf43SDag-Erling Smørgrav
8ce3adf43SDag-Erling Smørgravtid="sftp commands"
9ce3adf43SDag-Erling Smørgrav
10ce3adf43SDag-Erling Smørgrav# test that these files are readable!
11ce3adf43SDag-Erling Smørgravfor i in `(cd /bin;echo l*)`
12ce3adf43SDag-Erling Smørgravdo
13ce3adf43SDag-Erling Smørgrav	if [ -r $i ]; then
14ce3adf43SDag-Erling Smørgrav		GLOBFILES="$GLOBFILES $i"
15ce3adf43SDag-Erling Smørgrav	fi
16ce3adf43SDag-Erling Smørgravdone
17ce3adf43SDag-Erling Smørgrav
18ce3adf43SDag-Erling Smørgrav# Path with embedded quote
19ce3adf43SDag-Erling SmørgravQUOTECOPY=${COPY}".\"blah\""
20ce3adf43SDag-Erling SmørgravQUOTECOPY_ARG=${COPY}'.\"blah\"'
21ce3adf43SDag-Erling Smørgrav# File with spaces
22ce3adf43SDag-Erling SmørgravSPACECOPY="${COPY} this has spaces.txt"
23ce3adf43SDag-Erling SmørgravSPACECOPY_ARG="${COPY}\ this\ has\ spaces.txt"
24ce3adf43SDag-Erling Smørgrav# File with glob metacharacters
25ce3adf43SDag-Erling SmørgravGLOBMETACOPY="${COPY} [metachar].txt"
26ce3adf43SDag-Erling Smørgrav
27ce3adf43SDag-Erling Smørgravrm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${COPY}.dd2
28ce3adf43SDag-Erling Smørgravmkdir ${COPY}.dd
29ce3adf43SDag-Erling Smørgrav
30ce3adf43SDag-Erling Smørgravverbose "$tid: lls"
31ce3adf43SDag-Erling Smørgrav(echo "lcd ${OBJ}" ; echo "lls") | ${SFTP} -D ${SFTPSERVER} 2>&1 | \
32ce3adf43SDag-Erling Smørgrav	grep copy.dd >/dev/null 2>&1 || fail "lls failed"
33ce3adf43SDag-Erling Smørgrav
34ce3adf43SDag-Erling Smørgravverbose "$tid: lls w/path"
35ce3adf43SDag-Erling Smørgravecho "lls ${OBJ}" | ${SFTP} -D ${SFTPSERVER} 2>&1 | \
36ce3adf43SDag-Erling Smørgrav	grep copy.dd >/dev/null 2>&1 || fail "lls w/path failed"
37ce3adf43SDag-Erling Smørgrav
38ce3adf43SDag-Erling Smørgravverbose "$tid: ls"
39ce3adf43SDag-Erling Smørgravecho "ls ${OBJ}" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
40ce3adf43SDag-Erling Smørgrav	|| fail "ls failed"
41ce3adf43SDag-Erling Smørgrav# XXX always successful
42ce3adf43SDag-Erling Smørgrav
43ce3adf43SDag-Erling Smørgravverbose "$tid: shell"
44ce3adf43SDag-Erling Smørgravecho "!echo hi there" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
45ce3adf43SDag-Erling Smørgrav	|| fail "shell failed"
46ce3adf43SDag-Erling Smørgrav# XXX always successful
47ce3adf43SDag-Erling Smørgrav
48ce3adf43SDag-Erling Smørgravverbose "$tid: pwd"
49ce3adf43SDag-Erling Smørgravecho "pwd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
50ce3adf43SDag-Erling Smørgrav	|| fail "pwd failed"
51ce3adf43SDag-Erling Smørgrav# XXX always successful
52ce3adf43SDag-Erling Smørgrav
53ce3adf43SDag-Erling Smørgravverbose "$tid: lpwd"
54ce3adf43SDag-Erling Smørgravecho "lpwd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
55ce3adf43SDag-Erling Smørgrav	|| fail "lpwd failed"
56ce3adf43SDag-Erling Smørgrav# XXX always successful
57ce3adf43SDag-Erling Smørgrav
58ce3adf43SDag-Erling Smørgravverbose "$tid: quit"
59ce3adf43SDag-Erling Smørgravecho "quit" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
60ce3adf43SDag-Erling Smørgrav	|| fail "quit failed"
61ce3adf43SDag-Erling Smørgrav# XXX always successful
62ce3adf43SDag-Erling Smørgrav
63ce3adf43SDag-Erling Smørgravverbose "$tid: help"
64ce3adf43SDag-Erling Smørgravecho "help" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
65ce3adf43SDag-Erling Smørgrav	|| fail "help failed"
66ce3adf43SDag-Erling Smørgrav# XXX always successful
67ce3adf43SDag-Erling Smørgrav
68ce3adf43SDag-Erling Smørgravrm -f ${COPY}
69ce3adf43SDag-Erling Smørgravverbose "$tid: get"
70ce3adf43SDag-Erling Smørgravecho "get $DATA $COPY" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
71ce3adf43SDag-Erling Smørgrav	|| fail "get failed"
72ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY} || fail "corrupted copy after get"
73ce3adf43SDag-Erling Smørgrav
74ce3adf43SDag-Erling Smørgravrm -f ${COPY}
75ce3adf43SDag-Erling Smørgravverbose "$tid: get quoted"
76ce3adf43SDag-Erling Smørgravecho "get \"$DATA\" $COPY" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
77ce3adf43SDag-Erling Smørgrav	|| fail "get failed"
78ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY} || fail "corrupted copy after get"
79ce3adf43SDag-Erling Smørgrav
80ce3adf43SDag-Erling Smørgravrm -f ${QUOTECOPY}
81ce3adf43SDag-Erling Smørgravcp $DATA ${QUOTECOPY}
82ce3adf43SDag-Erling Smørgravverbose "$tid: get filename with quotes"
83ce3adf43SDag-Erling Smørgravecho "get \"$QUOTECOPY_ARG\" ${COPY}" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
84ce3adf43SDag-Erling Smørgrav	|| fail "get failed"
85ce3adf43SDag-Erling Smørgravcmp ${COPY} ${QUOTECOPY} || fail "corrupted copy after get with quotes"
86ce3adf43SDag-Erling Smørgravrm -f ${QUOTECOPY} ${COPY}
87ce3adf43SDag-Erling Smørgrav
88ce3adf43SDag-Erling Smørgravrm -f "$SPACECOPY" ${COPY}
89ce3adf43SDag-Erling Smørgravcp $DATA "$SPACECOPY"
90ce3adf43SDag-Erling Smørgravverbose "$tid: get filename with spaces"
91ce3adf43SDag-Erling Smørgravecho "get ${SPACECOPY_ARG} ${COPY}" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
92ce3adf43SDag-Erling Smørgrav        || fail "get failed"
93ce3adf43SDag-Erling Smørgravcmp ${COPY} "$SPACECOPY" || fail "corrupted copy after get with spaces"
94ce3adf43SDag-Erling Smørgrav
95ce3adf43SDag-Erling Smørgravrm -f "$GLOBMETACOPY" ${COPY}
96ce3adf43SDag-Erling Smørgravcp $DATA "$GLOBMETACOPY"
97ce3adf43SDag-Erling Smørgravverbose "$tid: get filename with glob metacharacters"
98ce3adf43SDag-Erling Smørgravecho "get \"${GLOBMETACOPY}\" ${COPY}" | \
99ce3adf43SDag-Erling Smørgrav	${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "get failed"
100ce3adf43SDag-Erling Smørgravcmp ${COPY} "$GLOBMETACOPY" || \
101ce3adf43SDag-Erling Smørgrav	fail "corrupted copy after get with glob metacharacters"
102ce3adf43SDag-Erling Smørgrav
103ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
104ce3adf43SDag-Erling Smørgravverbose "$tid: get to directory"
105ce3adf43SDag-Erling Smørgravecho "get $DATA ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
106ce3adf43SDag-Erling Smørgrav        || fail "get failed"
107ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY}.dd/$DATANAME || fail "corrupted copy after get"
108ce3adf43SDag-Erling Smørgrav
109ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
110ce3adf43SDag-Erling Smørgravverbose "$tid: glob get to directory"
111ce3adf43SDag-Erling Smørgravecho "get /bin/l* ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
112ce3adf43SDag-Erling Smørgrav        || fail "get failed"
113ce3adf43SDag-Erling Smørgravfor x in $GLOBFILES; do
114ce3adf43SDag-Erling Smørgrav        cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after get"
115ce3adf43SDag-Erling Smørgravdone
116ce3adf43SDag-Erling Smørgrav
117ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
118ce3adf43SDag-Erling Smørgravverbose "$tid: get to local dir"
119ce3adf43SDag-Erling Smørgrav(echo "lcd ${COPY}.dd"; echo "get $DATA" ) | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
120ce3adf43SDag-Erling Smørgrav        || fail "get failed"
121ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY}.dd/$DATANAME || fail "corrupted copy after get"
122ce3adf43SDag-Erling Smørgrav
123ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
124ce3adf43SDag-Erling Smørgravverbose "$tid: glob get to local dir"
125ce3adf43SDag-Erling Smørgrav(echo "lcd ${COPY}.dd"; echo "get /bin/l*") | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
126ce3adf43SDag-Erling Smørgrav        || fail "get failed"
127ce3adf43SDag-Erling Smørgravfor x in $GLOBFILES; do
128ce3adf43SDag-Erling Smørgrav        cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after get"
129ce3adf43SDag-Erling Smørgravdone
130ce3adf43SDag-Erling Smørgrav
131ce3adf43SDag-Erling Smørgravrm -f ${COPY}
132ce3adf43SDag-Erling Smørgravverbose "$tid: put"
133ce3adf43SDag-Erling Smørgravecho "put $DATA $COPY" | \
134ce3adf43SDag-Erling Smørgrav	${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "put failed"
135ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY} || fail "corrupted copy after put"
136ce3adf43SDag-Erling Smørgrav
137ce3adf43SDag-Erling Smørgravrm -f ${QUOTECOPY}
138ce3adf43SDag-Erling Smørgravverbose "$tid: put filename with quotes"
139ce3adf43SDag-Erling Smørgravecho "put $DATA \"$QUOTECOPY_ARG\"" | \
140ce3adf43SDag-Erling Smørgrav	${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "put failed"
141ce3adf43SDag-Erling Smørgravcmp $DATA ${QUOTECOPY} || fail "corrupted copy after put with quotes"
142ce3adf43SDag-Erling Smørgrav
143ce3adf43SDag-Erling Smørgravrm -f "$SPACECOPY"
144ce3adf43SDag-Erling Smørgravverbose "$tid: put filename with spaces"
145ce3adf43SDag-Erling Smørgravecho "put $DATA ${SPACECOPY_ARG}" | \
146ce3adf43SDag-Erling Smørgrav	${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "put failed"
147ce3adf43SDag-Erling Smørgravcmp $DATA "$SPACECOPY" || fail "corrupted copy after put with spaces"
148ce3adf43SDag-Erling Smørgrav
149ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
150ce3adf43SDag-Erling Smørgravverbose "$tid: put to directory"
151ce3adf43SDag-Erling Smørgravecho "put $DATA ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
152ce3adf43SDag-Erling Smørgrav	|| fail "put failed"
153ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY}.dd/$DATANAME || fail "corrupted copy after put"
154ce3adf43SDag-Erling Smørgrav
155ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
156ce3adf43SDag-Erling Smørgravverbose "$tid: glob put to directory"
157ce3adf43SDag-Erling Smørgravecho "put /bin/l? ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
158ce3adf43SDag-Erling Smørgrav	|| fail "put failed"
159ce3adf43SDag-Erling Smørgravfor x in $GLOBFILES; do
160ce3adf43SDag-Erling Smørgrav	cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after put"
161ce3adf43SDag-Erling Smørgravdone
162ce3adf43SDag-Erling Smørgrav
163ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
164ce3adf43SDag-Erling Smørgravverbose "$tid: put to local dir"
165ce3adf43SDag-Erling Smørgrav(echo "cd ${COPY}.dd"; echo "put $DATA") | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
166ce3adf43SDag-Erling Smørgrav	|| fail "put failed"
167ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY}.dd/$DATANAME || fail "corrupted copy after put"
168ce3adf43SDag-Erling Smørgrav
169ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
170ce3adf43SDag-Erling Smørgravverbose "$tid: glob put to local dir"
171ce3adf43SDag-Erling Smørgrav(echo "cd ${COPY}.dd"; echo "put /bin/l?") | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
172ce3adf43SDag-Erling Smørgrav	|| fail "put failed"
173ce3adf43SDag-Erling Smørgravfor x in $GLOBFILES; do
174ce3adf43SDag-Erling Smørgrav        cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after put"
175ce3adf43SDag-Erling Smørgravdone
176ce3adf43SDag-Erling Smørgrav
177ce3adf43SDag-Erling Smørgravverbose "$tid: rename"
178ce3adf43SDag-Erling Smørgravecho "rename $COPY ${COPY}.1" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
179ce3adf43SDag-Erling Smørgrav	|| fail "rename failed"
180ce3adf43SDag-Erling Smørgravtest -f ${COPY}.1 || fail "missing file after rename"
181ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY}.1 >/dev/null 2>&1 || fail "corrupted copy after rename"
182ce3adf43SDag-Erling Smørgrav
183ce3adf43SDag-Erling Smørgravverbose "$tid: rename directory"
184ce3adf43SDag-Erling Smørgravecho "rename ${COPY}.dd ${COPY}.dd2" | \
185ce3adf43SDag-Erling Smørgrav	${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || \
186ce3adf43SDag-Erling Smørgrav	fail "rename directory failed"
187ce3adf43SDag-Erling Smørgravtest -d ${COPY}.dd && fail "oldname exists after rename directory"
188ce3adf43SDag-Erling Smørgravtest -d ${COPY}.dd2 || fail "missing newname after rename directory"
189ce3adf43SDag-Erling Smørgrav
190ce3adf43SDag-Erling Smørgravverbose "$tid: ln"
191ce3adf43SDag-Erling Smørgravecho "ln ${COPY}.1 ${COPY}.2" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "ln failed"
192ce3adf43SDag-Erling Smørgravtest -f ${COPY}.2 || fail "missing file after ln"
193ce3adf43SDag-Erling Smørgravcmp ${COPY}.1 ${COPY}.2 || fail "created file is not equal after ln"
194ce3adf43SDag-Erling Smørgrav
195ce3adf43SDag-Erling Smørgravverbose "$tid: ln -s"
196ce3adf43SDag-Erling Smørgravrm -f ${COPY}.2
197ce3adf43SDag-Erling Smørgravecho "ln -s ${COPY}.1 ${COPY}.2" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "ln -s failed"
198ce3adf43SDag-Erling Smørgravtest -h ${COPY}.2 || fail "missing file after ln -s"
199ce3adf43SDag-Erling Smørgrav
200*38a52bd3SEd Masteverbose "$tid: cp"
201*38a52bd3SEd Masterm -f ${COPY}.2
202*38a52bd3SEd Masteecho "cp ${COPY}.1 ${COPY}.2" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "cp failed"
203*38a52bd3SEd Mastecmp ${COPY}.1 ${COPY}.2 || fail "created file is not equal after cp"
204*38a52bd3SEd Maste
205ce3adf43SDag-Erling Smørgravverbose "$tid: mkdir"
206ce3adf43SDag-Erling Smørgravecho "mkdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
207ce3adf43SDag-Erling Smørgrav	|| fail "mkdir failed"
208ce3adf43SDag-Erling Smørgravtest -d ${COPY}.dd || fail "missing directory after mkdir"
209ce3adf43SDag-Erling Smørgrav
210ce3adf43SDag-Erling Smørgrav# XXX do more here
211ce3adf43SDag-Erling Smørgravverbose "$tid: chdir"
212ce3adf43SDag-Erling Smørgravecho "chdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
213ce3adf43SDag-Erling Smørgrav	|| fail "chdir failed"
214ce3adf43SDag-Erling Smørgrav
215ce3adf43SDag-Erling Smørgravverbose "$tid: rmdir"
216ce3adf43SDag-Erling Smørgravecho "rmdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
217ce3adf43SDag-Erling Smørgrav	|| fail "rmdir failed"
218ce3adf43SDag-Erling Smørgravtest -d ${COPY}.1 && fail "present directory after rmdir"
219ce3adf43SDag-Erling Smørgrav
220ce3adf43SDag-Erling Smørgravverbose "$tid: lmkdir"
221ce3adf43SDag-Erling Smørgravecho "lmkdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
222ce3adf43SDag-Erling Smørgrav	|| fail "lmkdir failed"
223ce3adf43SDag-Erling Smørgravtest -d ${COPY}.dd || fail "missing directory after lmkdir"
224ce3adf43SDag-Erling Smørgrav
225ce3adf43SDag-Erling Smørgrav# XXX do more here
226ce3adf43SDag-Erling Smørgravverbose "$tid: lchdir"
227ce3adf43SDag-Erling Smørgravecho "lchdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
228ce3adf43SDag-Erling Smørgrav	|| fail "lchdir failed"
229ce3adf43SDag-Erling Smørgrav
230ce3adf43SDag-Erling Smørgravrm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${COPY}.dd2
231ce3adf43SDag-Erling Smørgravrm -rf ${QUOTECOPY} "$SPACECOPY" "$GLOBMETACOPY"
232ce3adf43SDag-Erling Smørgrav
233ce3adf43SDag-Erling Smørgrav
234