sftp-cmds.sh revision 1.7
1#	$OpenBSD: sftp-cmds.sh,v 1.7 2006/08/29 09:44:00 djm Exp $
2#	Placed in the Public Domain.
3
4# XXX - TODO: 
5# - chmod / chown / chgrp
6# - -p flag for get & put
7
8tid="sftp commands"
9
10DATA=/bin/ls
11COPY=${OBJ}/copy
12GLOBFILES=`(cd /bin;echo l*)`
13
14# Path with embedded quote
15QUOTECOPY=${COPY}".\"blah\""
16QUOTECOPY_ARG=${COPY}'.\"blah\"'
17
18rm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${COPY}.dd2 ${BATCH}.*
19mkdir ${COPY}.dd
20
21verbose "$tid: lls"
22echo "lls ${OBJ}" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
23	|| fail "lls failed"
24# XXX always successful
25
26verbose "$tid: ls"
27echo "ls ${OBJ}" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
28	|| fail "ls failed"
29# XXX always successful
30
31verbose "$tid: shell"
32echo "!echo hi there" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
33	|| fail "shell failed"
34# XXX always successful
35
36verbose "$tid: pwd"
37echo "pwd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
38	|| fail "pwd failed"
39# XXX always successful
40
41verbose "$tid: lpwd"
42echo "lpwd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
43	|| fail "lpwd failed"
44# XXX always successful
45
46verbose "$tid: quit"
47echo "quit" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
48	|| fail "quit failed"
49# XXX always successful
50
51verbose "$tid: help"
52echo "help" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
53	|| fail "help failed"
54# XXX always successful
55
56rm -f ${COPY}
57verbose "$tid: get"
58echo "get $DATA $COPY" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
59	|| fail "get failed"
60cmp $DATA ${COPY} || fail "corrupted copy after get"
61
62rm -f ${COPY}
63verbose "$tid: get quoted"
64echo "get \"$DATA\" $COPY" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
65	|| fail "get failed"
66cmp $DATA ${COPY} || fail "corrupted copy after get"
67
68rm -f ${QUOTECOPY}
69cp $DATA ${QUOTECOPY}
70verbose "$tid: get filename with quotes"
71echo "get \"$QUOTECOPY_ARG\" ${COPY}" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
72	|| fail "put failed"
73cmp ${COPY} ${QUOTECOPY} || fail "corrupted copy after get with quotes"
74rm -f ${QUOTECOPY} ${COPY}
75
76rm -f ${COPY}.dd/*
77verbose "$tid: get to directory"
78echo "get $DATA ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
79        || fail "get failed"
80cmp $DATA ${COPY}.dd/ls || fail "corrupted copy after get"
81
82rm -f ${COPY}.dd/*
83verbose "$tid: glob get to directory"
84echo "get /bin/l* ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
85        || fail "get failed"
86for x in $GLOBFILES; do
87        cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after get"
88done
89
90rm -f ${COPY}.dd/*
91verbose "$tid: get to local dir"
92echo "lcd ${COPY}.dd\nget $DATA" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
93        || fail "get failed"
94cmp $DATA ${COPY}.dd/ls || fail "corrupted copy after get"
95
96rm -f ${COPY}.dd/*
97verbose "$tid: glob get to local dir"
98echo "lcd ${COPY}.dd\nget /bin/l*" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
99        || fail "get failed"
100for x in $GLOBFILES; do
101        cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after get"
102done
103
104rm -f ${COPY}
105verbose "$tid: put"
106echo "put $DATA $COPY" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
107	|| fail "put failed"
108cmp $DATA ${COPY} || fail "corrupted copy after put"
109
110rm -f ${QUOTECOPY}
111verbose "$tid: put filename with quotes"
112echo "put $DATA \"$QUOTECOPY_ARG\"" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
113	|| fail "put failed"
114cmp $DATA ${QUOTECOPY} || fail "corrupted copy after put with quotes"
115
116rm -f ${COPY}.dd/*
117verbose "$tid: put to directory"
118echo "put $DATA ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
119	|| fail "put failed"
120cmp $DATA ${COPY}.dd/ls || fail "corrupted copy after put"
121
122rm -f ${COPY}.dd/*
123verbose "$tid: glob put to directory"
124echo "put /bin/l* ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
125	|| fail "put failed"
126for x in $GLOBFILES; do
127	cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after put"
128done
129
130rm -f ${COPY}.dd/*
131verbose "$tid: put to local dir"
132echo "cd ${COPY}.dd\nput $DATA" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
133	|| fail "put failed"
134cmp $DATA ${COPY}.dd/ls || fail "corrupted copy after put"
135
136rm -f ${COPY}.dd/*
137verbose "$tid: glob put to local dir"
138echo "cd ${COPY}.dd\nput /bin/l*" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
139	|| fail "put failed"
140for x in $GLOBFILES; do
141        cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after put"
142done
143
144verbose "$tid: rename"
145echo "rename $COPY ${COPY}.1" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
146	|| fail "rename failed"
147test -f ${COPY}.1 || fail "missing file after rename"
148cmp $DATA ${COPY}.1 >/dev/null 2>&1 || fail "corrupted copy after rename"
149
150verbose "$tid: rename directory"
151echo "rename ${COPY}.dd ${COPY}.dd2" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
152	|| fail "rename directory failed"
153test -d ${COPY}.dd && fail "oldname exists after rename directory"
154test -d ${COPY}.dd2 || fail "missing newname after rename directory"
155
156verbose "$tid: ln"
157echo "ln ${COPY}.1 ${COPY}.2" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 || fail "ln failed"
158test -L ${COPY}.2 || fail "missing file after ln"
159
160verbose "$tid: mkdir"
161echo "mkdir ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
162	|| fail "mkdir failed"
163test -d ${COPY}.dd || fail "missing directory after mkdir"
164
165# XXX do more here
166verbose "$tid: chdir"
167echo "chdir ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
168	|| fail "chdir failed"
169
170verbose "$tid: rmdir"
171echo "rmdir ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
172	|| fail "rmdir failed"
173test -d ${COPY}.1 && fail "present directory after rmdir"
174
175verbose "$tid: lmkdir"
176echo "lmkdir ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
177	|| fail "lmkdir failed"
178test -d ${COPY}.dd || fail "missing directory after lmkdir"
179
180# XXX do more here
181verbose "$tid: lchdir"
182echo "lchdir ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
183	|| fail "lchdir failed"
184
185rm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${COPY}.dd2 ${BATCH}.*
186rm -rf ${QUOTECOPY}
187
188
189