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