sftp-cmds.sh revision 1.5
1#	$OpenBSD: sftp-cmds.sh,v 1.5 2003/07/19 00:46:31 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}.dd/*
63verbose "$tid: get to directory"
64echo "get $DATA ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
65        || fail "get failed"
66cmp $DATA ${COPY}.dd/ls || fail "corrupted copy after get"
67
68rm -f ${COPY}.dd/*
69verbose "$tid: glob get to directory"
70echo "get /bin/l* ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
71        || fail "get failed"
72for x in $GLOBFILES; do
73        cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after get"
74done
75
76rm -f ${COPY}.dd/*
77verbose "$tid: get to local dir"
78echo "lcd ${COPY}.dd\nget $DATA" | ${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 local dir"
84echo "lcd ${COPY}.dd\nget /bin/l*" | ${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}
91verbose "$tid: put"
92echo "put $DATA $COPY" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
93	|| fail "put failed"
94cmp $DATA ${COPY} || fail "corrupted copy after put"
95
96rm -f ${QUOTECOPY}
97verbose "$tid: put filename with quotes"
98echo "put $DATA \"$QUOTECOPY_ARG\"" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
99	|| fail "put failed"
100cmp $DATA ${QUOTECOPY} || fail "corrupted copy after put with quotes"
101
102rm -f ${COPY}.dd/*
103verbose "$tid: put to directory"
104echo "put $DATA ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
105	|| fail "put failed"
106cmp $DATA ${COPY}.dd/ls || fail "corrupted copy after put"
107
108rm -f ${COPY}.dd/*
109verbose "$tid: glob put to directory"
110echo "put /bin/l* ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
111	|| fail "put failed"
112for x in $GLOBFILES; do
113	cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after put"
114done
115
116rm -f ${COPY}.dd/*
117verbose "$tid: put to local dir"
118echo "cd ${COPY}.dd\nput $DATA" | ${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 local dir"
124echo "cd ${COPY}.dd\nput /bin/l*" | ${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
130verbose "$tid: rename"
131echo "rename $COPY ${COPY}.1" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
132	|| fail "rename failed"
133test -f ${COPY}.1 || fail "missing file after rename"
134cmp $DATA ${COPY}.1 >/dev/null 2>&1 || fail "corrupted copy after rename"
135
136verbose "$tid: rename directory"
137echo "rename ${COPY}.dd ${COPY}.dd2" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
138	|| fail "rename directory failed"
139test -d ${COPY}.dd && fail "oldname exists after rename directory"
140test -d ${COPY}.dd2 || fail "missing newname after rename directory"
141
142verbose "$tid: ln"
143echo "ln ${COPY}.1 ${COPY}.2" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 || fail "ln failed"
144test -L ${COPY}.2 || fail "missing file after ln"
145
146verbose "$tid: mkdir"
147echo "mkdir ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
148	|| fail "mkdir failed"
149test -d ${COPY}.dd || fail "missing directory after mkdir"
150
151# XXX do more here
152verbose "$tid: chdir"
153echo "chdir ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
154	|| fail "chdir failed"
155
156verbose "$tid: rmdir"
157echo "rmdir ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
158	|| fail "rmdir failed"
159test -d ${COPY}.1 && fail "present directory after rmdir"
160
161verbose "$tid: lmkdir"
162echo "lmkdir ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
163	|| fail "lmkdir failed"
164test -d ${COPY}.dd || fail "missing directory after lmkdir"
165
166# XXX do more here
167verbose "$tid: lchdir"
168echo "lchdir ${COPY}.dd" | ${SFTP} -P ${SFTPSERVER} >/dev/null 2>&1 \
169	|| fail "lchdir failed"
170
171rm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${COPY}.dd2 ${BATCH}.*
172
173
174