]>
Commit | Line | Data |
---|---|---|
ba59fd15 | 1 | # $OpenBSD: sftp-cmds.sh,v 1.8 2007/10/24 03:32:35 djm Exp $ |
8582624b | 2 | # Placed in the Public Domain. |
3 | ||
4 | # XXX - TODO: | |
8582624b | 5 | # - chmod / chown / chgrp |
6 | # - -p flag for get & put | |
7 | ||
8 | tid="sftp commands" | |
9 | ||
83d96134 | 10 | DATA=/bin/ls${EXEEXT} |
8582624b | 11 | COPY=${OBJ}/copy |
783a8283 | 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 | ||
c1b10a96 | 20 | if have_prog uname |
ac4a169f | 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 | ||
86d0260c | 34 | # Path with embedded quote |
35 | QUOTECOPY=${COPY}".\"blah\"" | |
36 | QUOTECOPY_ARG=${COPY}'.\"blah\"' | |
ba59fd15 | 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" | |
86d0260c | 42 | |
2b1bb684 | 43 | rm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${COPY}.dd2 |
68df2aa0 | 44 | mkdir ${COPY}.dd |
8582624b | 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 | ||
3d3e0ec3 | 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 | ||
f9aacd5e | 93 | if [ "$os" != "cygwin" ]; then |
3d3e0ec3 | 94 | rm -f ${QUOTECOPY} |
95 | cp $DATA ${QUOTECOPY} | |
96 | verbose "$tid: get filename with quotes" | |
ba59fd15 | 97 | echo "get \"$QUOTECOPY_ARG\" ${COPY}" | \ |
98 | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \ || fail "get failed" | |
3d3e0ec3 | 99 | cmp ${COPY} ${QUOTECOPY} || fail "corrupted copy after get with quotes" |
100 | rm -f ${QUOTECOPY} ${COPY} | |
f9aacd5e | 101 | fi |
3d3e0ec3 | 102 | |
ba59fd15 | 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 | ||
68df2aa0 | 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" | |
83d96134 | 122 | cmp $DATA ${COPY}.dd/`basename $DATA` || fail "corrupted copy after get" |
68df2aa0 | 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" | |
83d96134 | 134 | (echo "lcd ${COPY}.dd"; echo "get $DATA" ) | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \ |
68df2aa0 | 135 | || fail "get failed" |
83d96134 | 136 | cmp $DATA ${COPY}.dd/`basename $DATA` || fail "corrupted copy after get" |
68df2aa0 | 137 | |
138 | rm -f ${COPY}.dd/* | |
139 | verbose "$tid: glob get to local dir" | |
83d96134 | 140 | (echo "lcd ${COPY}.dd"; echo "get /bin/l*") | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \ |
68df2aa0 | 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 | ||
8582624b | 146 | rm -f ${COPY} |
147 | verbose "$tid: put" | |
ba59fd15 | 148 | echo "put $DATA $COPY" | \ |
149 | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 || fail "put failed" | |
8582624b | 150 | cmp $DATA ${COPY} || fail "corrupted copy after put" |
151 | ||
ac4a169f | 152 | if [ "$os" != "cygwin" ]; then |
86d0260c | 153 | rm -f ${QUOTECOPY} |
154 | verbose "$tid: put filename with quotes" | |
ba59fd15 | 155 | echo "put $DATA \"$QUOTECOPY_ARG\"" | \ |
156 | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 || fail "put failed" | |
86d0260c | 157 | cmp $DATA ${QUOTECOPY} || fail "corrupted copy after put with quotes" |
ac4a169f | 158 | fi |
86d0260c | 159 | |
ba59fd15 | 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 | ||
68df2aa0 | 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" | |
83d96134 | 170 | cmp $DATA ${COPY}.dd/`basename $DATA` || fail "corrupted copy after put" |
68df2aa0 | 171 | |
172 | rm -f ${COPY}.dd/* | |
173 | verbose "$tid: glob put to directory" | |
a556beb5 | 174 | echo "put /bin/l? ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \ |
68df2aa0 | 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" | |
83d96134 | 182 | (echo "cd ${COPY}.dd"; echo "put $DATA") | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \ |
68df2aa0 | 183 | || fail "put failed" |
83d96134 | 184 | cmp $DATA ${COPY}.dd/`basename $DATA` || fail "corrupted copy after put" |
68df2aa0 | 185 | |
186 | rm -f ${COPY}.dd/* | |
187 | verbose "$tid: glob put to local dir" | |
a556beb5 | 188 | (echo "cd ${COPY}.dd"; echo "put /bin/l?") | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \ |
68df2aa0 | 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 | ||
8582624b | 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 | ||
2c670155 | 200 | verbose "$tid: rename directory" |
ba59fd15 | 201 | echo "rename ${COPY}.dd ${COPY}.dd2" | \ |
202 | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 || \ | |
203 | fail "rename directory failed" | |
2c670155 | 204 | test -d ${COPY}.dd && fail "oldname exists after rename directory" |
205 | test -d ${COPY}.dd2 || fail "missing newname after rename directory" | |
206 | ||
8582624b | 207 | verbose "$tid: ln" |
208 | echo "ln ${COPY}.1 ${COPY}.2" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 || fail "ln failed" | |
a687e172 | 209 | test -h ${COPY}.2 || fail "missing file after ln" |
8582624b | 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 | ||
2b1bb684 | 236 | rm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${COPY}.dd2 |
ba59fd15 | 237 | rm -rf ${QUOTECOPY} "$SPACECOPY" "$GLOBMETACOPY" |
8582624b | 238 |