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