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