xref: /freebsd/crypto/openssh/regress/sftp-cmds.sh (revision 0fdf8fae8b569bf9fff3b5171e669dcd7cf9c79e)
1*0fdf8faeSEd Maste#	$OpenBSD: sftp-cmds.sh,v 1.20 2024/07/01 03:10:19 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"
31*0fdf8faeSEd Masteprintf "lcd ${OBJ}\nlls\n" | ${SFTP} -D ${SFTPSERVER} 2>&1 | \
32*0fdf8faeSEd Maste	grep copy.dd >/dev/null || 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 | \
36*0fdf8faeSEd Maste	grep copy.dd >/dev/null || 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"
44*0fdf8faeSEd Masteecho "!echo hi there" | ${SFTP} -D ${SFTPSERVER} 2>&1 | \
45*0fdf8faeSEd Maste	egrep '^hi there$' >/dev/null || fail "shell failed"
46ce3adf43SDag-Erling Smørgrav
47ce3adf43SDag-Erling Smørgravverbose "$tid: pwd"
48ce3adf43SDag-Erling Smørgravecho "pwd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
49ce3adf43SDag-Erling Smørgrav	|| fail "pwd failed"
50ce3adf43SDag-Erling Smørgrav# XXX always successful
51ce3adf43SDag-Erling Smørgrav
52ce3adf43SDag-Erling Smørgravverbose "$tid: lpwd"
53ce3adf43SDag-Erling Smørgravecho "lpwd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
54ce3adf43SDag-Erling Smørgrav	|| fail "lpwd failed"
55ce3adf43SDag-Erling Smørgrav# XXX always successful
56ce3adf43SDag-Erling Smørgrav
57ce3adf43SDag-Erling Smørgravverbose "$tid: quit"
58ce3adf43SDag-Erling Smørgravecho "quit" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
59ce3adf43SDag-Erling Smørgrav	|| fail "quit failed"
60ce3adf43SDag-Erling Smørgrav# XXX always successful
61ce3adf43SDag-Erling Smørgrav
62ce3adf43SDag-Erling Smørgravverbose "$tid: help"
63ce3adf43SDag-Erling Smørgravecho "help" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
64ce3adf43SDag-Erling Smørgrav	|| fail "help failed"
65ce3adf43SDag-Erling Smørgrav# XXX always successful
66ce3adf43SDag-Erling Smørgrav
67ce3adf43SDag-Erling Smørgravrm -f ${COPY}
68ce3adf43SDag-Erling Smørgravverbose "$tid: get"
69ce3adf43SDag-Erling Smørgravecho "get $DATA $COPY" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
70ce3adf43SDag-Erling Smørgrav	|| fail "get failed"
71ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY} || fail "corrupted copy after get"
72ce3adf43SDag-Erling Smørgrav
73ce3adf43SDag-Erling Smørgravrm -f ${COPY}
74ce3adf43SDag-Erling Smørgravverbose "$tid: get quoted"
75ce3adf43SDag-Erling Smørgravecho "get \"$DATA\" $COPY" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
76ce3adf43SDag-Erling Smørgrav	|| fail "get failed"
77ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY} || fail "corrupted copy after get"
78ce3adf43SDag-Erling Smørgrav
79ce3adf43SDag-Erling Smørgravrm -f ${QUOTECOPY}
80ce3adf43SDag-Erling Smørgravcp $DATA ${QUOTECOPY}
81ce3adf43SDag-Erling Smørgravverbose "$tid: get filename with quotes"
82ce3adf43SDag-Erling Smørgravecho "get \"$QUOTECOPY_ARG\" ${COPY}" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
83ce3adf43SDag-Erling Smørgrav	|| fail "get failed"
84ce3adf43SDag-Erling Smørgravcmp ${COPY} ${QUOTECOPY} || fail "corrupted copy after get with quotes"
85ce3adf43SDag-Erling Smørgravrm -f ${QUOTECOPY} ${COPY}
86ce3adf43SDag-Erling Smørgrav
87ce3adf43SDag-Erling Smørgravrm -f "$SPACECOPY" ${COPY}
88ce3adf43SDag-Erling Smørgravcp $DATA "$SPACECOPY"
89ce3adf43SDag-Erling Smørgravverbose "$tid: get filename with spaces"
90ce3adf43SDag-Erling Smørgravecho "get ${SPACECOPY_ARG} ${COPY}" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
91ce3adf43SDag-Erling Smørgrav        || fail "get failed"
92ce3adf43SDag-Erling Smørgravcmp ${COPY} "$SPACECOPY" || fail "corrupted copy after get with spaces"
93ce3adf43SDag-Erling Smørgrav
94ce3adf43SDag-Erling Smørgravrm -f "$GLOBMETACOPY" ${COPY}
95ce3adf43SDag-Erling Smørgravcp $DATA "$GLOBMETACOPY"
96ce3adf43SDag-Erling Smørgravverbose "$tid: get filename with glob metacharacters"
97ce3adf43SDag-Erling Smørgravecho "get \"${GLOBMETACOPY}\" ${COPY}" | \
98ce3adf43SDag-Erling Smørgrav	${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "get failed"
99ce3adf43SDag-Erling Smørgravcmp ${COPY} "$GLOBMETACOPY" || \
100ce3adf43SDag-Erling Smørgrav	fail "corrupted copy after get with glob metacharacters"
101ce3adf43SDag-Erling Smørgrav
102ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
103ce3adf43SDag-Erling Smørgravverbose "$tid: get to directory"
104ce3adf43SDag-Erling Smørgravecho "get $DATA ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
105ce3adf43SDag-Erling Smørgrav        || fail "get failed"
106*0fdf8faeSEd Mastecmp $DATA ${COPY}.dd/${DATANAME} || fail "corrupted copy after get"
107ce3adf43SDag-Erling Smørgrav
108ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
109ce3adf43SDag-Erling Smørgravverbose "$tid: glob get to directory"
110ce3adf43SDag-Erling Smørgravecho "get /bin/l* ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
111ce3adf43SDag-Erling Smørgrav        || fail "get failed"
112ce3adf43SDag-Erling Smørgravfor x in $GLOBFILES; do
113ce3adf43SDag-Erling Smørgrav        cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after get"
114ce3adf43SDag-Erling Smørgravdone
115ce3adf43SDag-Erling Smørgrav
116ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
117ce3adf43SDag-Erling Smørgravverbose "$tid: get to local dir"
118*0fdf8faeSEd Masteprintf "lcd ${COPY}.dd\nget $DATA\n" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
119ce3adf43SDag-Erling Smørgrav        || fail "get failed"
120*0fdf8faeSEd Mastecmp $DATA ${COPY}.dd/${DATANAME} || fail "corrupted copy after get"
121ce3adf43SDag-Erling Smørgrav
122ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
123ce3adf43SDag-Erling Smørgravverbose "$tid: glob get to local dir"
124*0fdf8faeSEd Masteprintf "lcd ${COPY}.dd\nget /bin/l*\n" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
125ce3adf43SDag-Erling Smørgrav        || fail "get failed"
126ce3adf43SDag-Erling Smørgravfor x in $GLOBFILES; do
127ce3adf43SDag-Erling Smørgrav        cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after get"
128ce3adf43SDag-Erling Smørgravdone
129ce3adf43SDag-Erling Smørgrav
130ce3adf43SDag-Erling Smørgravrm -f ${COPY}
131ce3adf43SDag-Erling Smørgravverbose "$tid: put"
132ce3adf43SDag-Erling Smørgravecho "put $DATA $COPY" | \
133ce3adf43SDag-Erling Smørgrav	${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "put failed"
134ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY} || fail "corrupted copy after put"
135ce3adf43SDag-Erling Smørgrav
136ce3adf43SDag-Erling Smørgravrm -f ${QUOTECOPY}
137ce3adf43SDag-Erling Smørgravverbose "$tid: put filename with quotes"
138ce3adf43SDag-Erling Smørgravecho "put $DATA \"$QUOTECOPY_ARG\"" | \
139ce3adf43SDag-Erling Smørgrav	${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "put failed"
140ce3adf43SDag-Erling Smørgravcmp $DATA ${QUOTECOPY} || fail "corrupted copy after put with quotes"
141ce3adf43SDag-Erling Smørgrav
142ce3adf43SDag-Erling Smørgravrm -f "$SPACECOPY"
143ce3adf43SDag-Erling Smørgravverbose "$tid: put filename with spaces"
144ce3adf43SDag-Erling Smørgravecho "put $DATA ${SPACECOPY_ARG}" | \
145ce3adf43SDag-Erling Smørgrav	${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "put failed"
146ce3adf43SDag-Erling Smørgravcmp $DATA "$SPACECOPY" || fail "corrupted copy after put with spaces"
147ce3adf43SDag-Erling Smørgrav
148ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
149ce3adf43SDag-Erling Smørgravverbose "$tid: put to directory"
150ce3adf43SDag-Erling Smørgravecho "put $DATA ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
151ce3adf43SDag-Erling Smørgrav	|| fail "put failed"
152*0fdf8faeSEd Mastecmp $DATA ${COPY}.dd/${DATANAME} || fail "corrupted copy after put"
153ce3adf43SDag-Erling Smørgrav
154ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
155ce3adf43SDag-Erling Smørgravverbose "$tid: glob put to directory"
156ce3adf43SDag-Erling Smørgravecho "put /bin/l? ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
157ce3adf43SDag-Erling Smørgrav	|| fail "put failed"
158ce3adf43SDag-Erling Smørgravfor x in $GLOBFILES; do
159ce3adf43SDag-Erling Smørgrav	cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after put"
160ce3adf43SDag-Erling Smørgravdone
161ce3adf43SDag-Erling Smørgrav
162ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
163ce3adf43SDag-Erling Smørgravverbose "$tid: put to local dir"
164*0fdf8faeSEd Masteprintf "cd ${COPY}.dd\nput $DATA\n" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
165ce3adf43SDag-Erling Smørgrav	|| fail "put failed"
166*0fdf8faeSEd Mastecmp $DATA ${COPY}.dd/${DATANAME} || fail "corrupted copy after put"
167ce3adf43SDag-Erling Smørgrav
168ce3adf43SDag-Erling Smørgravrm -f ${COPY}.dd/*
169ce3adf43SDag-Erling Smørgravverbose "$tid: glob put to local dir"
170*0fdf8faeSEd Masteprintf "cd ${COPY}.dd\nput /bin/l*\n" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
171ce3adf43SDag-Erling Smørgrav	|| fail "put failed"
172ce3adf43SDag-Erling Smørgravfor x in $GLOBFILES; do
173ce3adf43SDag-Erling Smørgrav        cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after put"
174ce3adf43SDag-Erling Smørgravdone
175ce3adf43SDag-Erling Smørgrav
176ce3adf43SDag-Erling Smørgravverbose "$tid: rename"
177ce3adf43SDag-Erling Smørgravecho "rename $COPY ${COPY}.1" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
178ce3adf43SDag-Erling Smørgrav	|| fail "rename failed"
179ce3adf43SDag-Erling Smørgravtest -f ${COPY}.1 || fail "missing file after rename"
180ce3adf43SDag-Erling Smørgravcmp $DATA ${COPY}.1 >/dev/null 2>&1 || fail "corrupted copy after rename"
181ce3adf43SDag-Erling Smørgrav
182ce3adf43SDag-Erling Smørgravverbose "$tid: rename directory"
183ce3adf43SDag-Erling Smørgravecho "rename ${COPY}.dd ${COPY}.dd2" | \
184ce3adf43SDag-Erling Smørgrav	${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || \
185ce3adf43SDag-Erling Smørgrav	fail "rename directory failed"
186ce3adf43SDag-Erling Smørgravtest -d ${COPY}.dd && fail "oldname exists after rename directory"
187ce3adf43SDag-Erling Smørgravtest -d ${COPY}.dd2 || fail "missing newname after rename directory"
188ce3adf43SDag-Erling Smørgrav
189ce3adf43SDag-Erling Smørgravverbose "$tid: ln"
190ce3adf43SDag-Erling Smørgravecho "ln ${COPY}.1 ${COPY}.2" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "ln failed"
191ce3adf43SDag-Erling Smørgravtest -f ${COPY}.2 || fail "missing file after ln"
192ce3adf43SDag-Erling Smørgravcmp ${COPY}.1 ${COPY}.2 || fail "created file is not equal after ln"
193ce3adf43SDag-Erling Smørgrav
194ce3adf43SDag-Erling Smørgravverbose "$tid: ln -s"
195ce3adf43SDag-Erling Smørgravrm -f ${COPY}.2
196ce3adf43SDag-Erling Smørgravecho "ln -s ${COPY}.1 ${COPY}.2" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "ln -s failed"
197ce3adf43SDag-Erling Smørgravtest -h ${COPY}.2 || fail "missing file after ln -s"
198ce3adf43SDag-Erling Smørgrav
19938a52bd3SEd Masteverbose "$tid: cp"
20038a52bd3SEd Masterm -f ${COPY}.2
20138a52bd3SEd Masteecho "cp ${COPY}.1 ${COPY}.2" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "cp failed"
20238a52bd3SEd Mastecmp ${COPY}.1 ${COPY}.2 || fail "created file is not equal after cp"
20338a52bd3SEd Maste
204ce3adf43SDag-Erling Smørgravverbose "$tid: mkdir"
205ce3adf43SDag-Erling Smørgravecho "mkdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
206ce3adf43SDag-Erling Smørgrav	|| fail "mkdir failed"
207ce3adf43SDag-Erling Smørgravtest -d ${COPY}.dd || fail "missing directory after mkdir"
208ce3adf43SDag-Erling Smørgrav
209ce3adf43SDag-Erling Smørgrav# XXX do more here
210ce3adf43SDag-Erling Smørgravverbose "$tid: chdir"
211ce3adf43SDag-Erling Smørgravecho "chdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
212ce3adf43SDag-Erling Smørgrav	|| fail "chdir failed"
213ce3adf43SDag-Erling Smørgrav
214ce3adf43SDag-Erling Smørgravverbose "$tid: rmdir"
215ce3adf43SDag-Erling Smørgravecho "rmdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
216ce3adf43SDag-Erling Smørgrav	|| fail "rmdir failed"
217ce3adf43SDag-Erling Smørgravtest -d ${COPY}.1 && fail "present directory after rmdir"
218ce3adf43SDag-Erling Smørgrav
219ce3adf43SDag-Erling Smørgravverbose "$tid: lmkdir"
220ce3adf43SDag-Erling Smørgravecho "lmkdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
221ce3adf43SDag-Erling Smørgrav	|| fail "lmkdir failed"
222ce3adf43SDag-Erling Smørgravtest -d ${COPY}.dd || fail "missing directory after lmkdir"
223ce3adf43SDag-Erling Smørgrav
224ce3adf43SDag-Erling Smørgrav# XXX do more here
225ce3adf43SDag-Erling Smørgravverbose "$tid: lchdir"
226ce3adf43SDag-Erling Smørgravecho "lchdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
227ce3adf43SDag-Erling Smørgrav	|| fail "lchdir failed"
228ce3adf43SDag-Erling Smørgrav
229ce3adf43SDag-Erling Smørgravrm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${COPY}.dd2
230ce3adf43SDag-Erling Smørgravrm -rf ${QUOTECOPY} "$SPACECOPY" "$GLOBMETACOPY"
231ce3adf43SDag-Erling Smørgrav
232ce3adf43SDag-Erling Smørgrav
233