1255670Sdes# $OpenBSD: sftp-cmds.sh,v 1.14 2013/06/21 02:26:26 djm Exp $ 2113908Sdes# Placed in the Public Domain. 3113908Sdes 4113908Sdes# XXX - TODO: 5113908Sdes# - chmod / chown / chgrp 6113908Sdes# - -p flag for get & put 7113908Sdes 8113908Sdestid="sftp commands" 9113908Sdes 10124208Sdes# test that these files are readable! 11124208Sdesfor i in `(cd /bin;echo l*)` 12124208Sdesdo 13124208Sdes if [ -r $i ]; then 14124208Sdes GLOBFILES="$GLOBFILES $i" 15124208Sdes fi 16124208Sdesdone 17113908Sdes 18124208Sdes# Path with embedded quote 19124208SdesQUOTECOPY=${COPY}".\"blah\"" 20124208SdesQUOTECOPY_ARG=${COPY}'.\"blah\"' 21180746Sdes# File with spaces 22180746SdesSPACECOPY="${COPY} this has spaces.txt" 23180746SdesSPACECOPY_ARG="${COPY}\ this\ has\ spaces.txt" 24180746Sdes# File with glob metacharacters 25180746SdesGLOBMETACOPY="${COPY} [metachar].txt" 26124208Sdes 27239849Sdesrm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${COPY}.dd2 28124208Sdesmkdir ${COPY}.dd 29124208Sdes 30113908Sdesverbose "$tid: lls" 31204861Sdes(echo "lcd ${OBJ}" ; echo "lls") | ${SFTP} -D ${SFTPSERVER} 2>&1 | \ 32180746Sdes grep copy.dd >/dev/null 2>&1 || fail "lls failed" 33113908Sdes 34180746Sdesverbose "$tid: lls w/path" 35204861Sdesecho "lls ${OBJ}" | ${SFTP} -D ${SFTPSERVER} 2>&1 | \ 36180746Sdes grep copy.dd >/dev/null 2>&1 || fail "lls w/path failed" 37180746Sdes 38113908Sdesverbose "$tid: ls" 39204861Sdesecho "ls ${OBJ}" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 40113908Sdes || fail "ls failed" 41113908Sdes# XXX always successful 42113908Sdes 43113908Sdesverbose "$tid: shell" 44204861Sdesecho "!echo hi there" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 45113908Sdes || fail "shell failed" 46113908Sdes# XXX always successful 47113908Sdes 48113908Sdesverbose "$tid: pwd" 49204861Sdesecho "pwd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 50113908Sdes || fail "pwd failed" 51113908Sdes# XXX always successful 52113908Sdes 53113908Sdesverbose "$tid: lpwd" 54204861Sdesecho "lpwd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 55113908Sdes || fail "lpwd failed" 56113908Sdes# XXX always successful 57113908Sdes 58113908Sdesverbose "$tid: quit" 59204861Sdesecho "quit" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 60113908Sdes || fail "quit failed" 61113908Sdes# XXX always successful 62113908Sdes 63113908Sdesverbose "$tid: help" 64204861Sdesecho "help" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 65113908Sdes || fail "help failed" 66113908Sdes# XXX always successful 67113908Sdes 68113908Sdesrm -f ${COPY} 69113908Sdesverbose "$tid: get" 70204861Sdesecho "get $DATA $COPY" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 71113908Sdes || fail "get failed" 72113908Sdescmp $DATA ${COPY} || fail "corrupted copy after get" 73113908Sdes 74126274Sdesrm -f ${COPY} 75126274Sdesverbose "$tid: get quoted" 76204861Sdesecho "get \"$DATA\" $COPY" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 77126274Sdes || fail "get failed" 78126274Sdescmp $DATA ${COPY} || fail "corrupted copy after get" 79126274Sdes 80128456Sdesif [ "$os" != "cygwin" ]; then 81126274Sdesrm -f ${QUOTECOPY} 82126274Sdescp $DATA ${QUOTECOPY} 83126274Sdesverbose "$tid: get filename with quotes" 84204861Sdesecho "get \"$QUOTECOPY_ARG\" ${COPY}" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 85204861Sdes || fail "get failed" 86126274Sdescmp ${COPY} ${QUOTECOPY} || fail "corrupted copy after get with quotes" 87126274Sdesrm -f ${QUOTECOPY} ${COPY} 88128456Sdesfi 89126274Sdes 90180746Sdesrm -f "$SPACECOPY" ${COPY} 91180746Sdescp $DATA "$SPACECOPY" 92180746Sdesverbose "$tid: get filename with spaces" 93204861Sdesecho "get ${SPACECOPY_ARG} ${COPY}" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 94180746Sdes || fail "get failed" 95180746Sdescmp ${COPY} "$SPACECOPY" || fail "corrupted copy after get with spaces" 96180746Sdes 97180746Sdesrm -f "$GLOBMETACOPY" ${COPY} 98180746Sdescp $DATA "$GLOBMETACOPY" 99180746Sdesverbose "$tid: get filename with glob metacharacters" 100180746Sdesecho "get \"${GLOBMETACOPY}\" ${COPY}" | \ 101204861Sdes ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "get failed" 102180746Sdescmp ${COPY} "$GLOBMETACOPY" || \ 103180746Sdes fail "corrupted copy after get with glob metacharacters" 104180746Sdes 105124208Sdesrm -f ${COPY}.dd/* 106124208Sdesverbose "$tid: get to directory" 107204861Sdesecho "get $DATA ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 108124208Sdes || fail "get failed" 109255670Sdescmp $DATA ${COPY}.dd/$DATANAME || fail "corrupted copy after get" 110124208Sdes 111124208Sdesrm -f ${COPY}.dd/* 112124208Sdesverbose "$tid: glob get to directory" 113204861Sdesecho "get /bin/l* ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 114124208Sdes || fail "get failed" 115124208Sdesfor x in $GLOBFILES; do 116124208Sdes cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after get" 117124208Sdesdone 118124208Sdes 119124208Sdesrm -f ${COPY}.dd/* 120124208Sdesverbose "$tid: get to local dir" 121204861Sdes(echo "lcd ${COPY}.dd"; echo "get $DATA" ) | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 122124208Sdes || fail "get failed" 123255670Sdescmp $DATA ${COPY}.dd/$DATANAME || fail "corrupted copy after get" 124124208Sdes 125124208Sdesrm -f ${COPY}.dd/* 126124208Sdesverbose "$tid: glob get to local dir" 127204861Sdes(echo "lcd ${COPY}.dd"; echo "get /bin/l*") | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 128124208Sdes || fail "get failed" 129124208Sdesfor x in $GLOBFILES; do 130124208Sdes cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after get" 131124208Sdesdone 132124208Sdes 133113908Sdesrm -f ${COPY} 134113908Sdesverbose "$tid: put" 135180746Sdesecho "put $DATA $COPY" | \ 136204861Sdes ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "put failed" 137113908Sdescmp $DATA ${COPY} || fail "corrupted copy after put" 138113908Sdes 139124208Sdesif [ "$os" != "cygwin" ]; then 140124208Sdesrm -f ${QUOTECOPY} 141124208Sdesverbose "$tid: put filename with quotes" 142180746Sdesecho "put $DATA \"$QUOTECOPY_ARG\"" | \ 143204861Sdes ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "put failed" 144124208Sdescmp $DATA ${QUOTECOPY} || fail "corrupted copy after put with quotes" 145124208Sdesfi 146124208Sdes 147180746Sdesrm -f "$SPACECOPY" 148180746Sdesverbose "$tid: put filename with spaces" 149180746Sdesecho "put $DATA ${SPACECOPY_ARG}" | \ 150204861Sdes ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "put failed" 151180746Sdescmp $DATA "$SPACECOPY" || fail "corrupted copy after put with spaces" 152180746Sdes 153124208Sdesrm -f ${COPY}.dd/* 154124208Sdesverbose "$tid: put to directory" 155204861Sdesecho "put $DATA ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 156124208Sdes || fail "put failed" 157255670Sdescmp $DATA ${COPY}.dd/$DATANAME || fail "corrupted copy after put" 158124208Sdes 159124208Sdesrm -f ${COPY}.dd/* 160124208Sdesverbose "$tid: glob put to directory" 161204861Sdesecho "put /bin/l? ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 162124208Sdes || fail "put failed" 163124208Sdesfor x in $GLOBFILES; do 164124208Sdes cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after put" 165124208Sdesdone 166124208Sdes 167124208Sdesrm -f ${COPY}.dd/* 168124208Sdesverbose "$tid: put to local dir" 169204861Sdes(echo "cd ${COPY}.dd"; echo "put $DATA") | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 170124208Sdes || fail "put failed" 171255670Sdescmp $DATA ${COPY}.dd/$DATANAME || fail "corrupted copy after put" 172124208Sdes 173124208Sdesrm -f ${COPY}.dd/* 174124208Sdesverbose "$tid: glob put to local dir" 175204861Sdes(echo "cd ${COPY}.dd"; echo "put /bin/l?") | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 176124208Sdes || fail "put failed" 177124208Sdesfor x in $GLOBFILES; do 178124208Sdes cmp /bin/$x ${COPY}.dd/$x || fail "corrupted copy after put" 179124208Sdesdone 180124208Sdes 181113908Sdesverbose "$tid: rename" 182204861Sdesecho "rename $COPY ${COPY}.1" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 183113908Sdes || fail "rename failed" 184113908Sdestest -f ${COPY}.1 || fail "missing file after rename" 185113908Sdescmp $DATA ${COPY}.1 >/dev/null 2>&1 || fail "corrupted copy after rename" 186113908Sdes 187124208Sdesverbose "$tid: rename directory" 188180746Sdesecho "rename ${COPY}.dd ${COPY}.dd2" | \ 189204861Sdes ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || \ 190180746Sdes fail "rename directory failed" 191124208Sdestest -d ${COPY}.dd && fail "oldname exists after rename directory" 192124208Sdestest -d ${COPY}.dd2 || fail "missing newname after rename directory" 193124208Sdes 194113908Sdesverbose "$tid: ln" 195204861Sdesecho "ln ${COPY}.1 ${COPY}.2" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "ln failed" 196218767Sdestest -f ${COPY}.2 || fail "missing file after ln" 197218767Sdescmp ${COPY}.1 ${COPY}.2 || fail "created file is not equal after ln" 198113908Sdes 199218767Sdesverbose "$tid: ln -s" 200218767Sdesrm -f ${COPY}.2 201218767Sdesecho "ln -s ${COPY}.1 ${COPY}.2" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "ln -s failed" 202218767Sdestest -h ${COPY}.2 || fail "missing file after ln -s" 203218767Sdes 204113908Sdesverbose "$tid: mkdir" 205204861Sdesecho "mkdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 206113908Sdes || fail "mkdir failed" 207113908Sdestest -d ${COPY}.dd || fail "missing directory after mkdir" 208113908Sdes 209113908Sdes# XXX do more here 210113908Sdesverbose "$tid: chdir" 211204861Sdesecho "chdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 212113908Sdes || fail "chdir failed" 213113908Sdes 214113908Sdesverbose "$tid: rmdir" 215204861Sdesecho "rmdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 216113908Sdes || fail "rmdir failed" 217113908Sdestest -d ${COPY}.1 && fail "present directory after rmdir" 218113908Sdes 219113908Sdesverbose "$tid: lmkdir" 220204861Sdesecho "lmkdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 221113908Sdes || fail "lmkdir failed" 222113908Sdestest -d ${COPY}.dd || fail "missing directory after lmkdir" 223113908Sdes 224113908Sdes# XXX do more here 225113908Sdesverbose "$tid: lchdir" 226204861Sdesecho "lchdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \ 227113908Sdes || fail "lchdir failed" 228113908Sdes 229239849Sdesrm -rf ${COPY} ${COPY}.1 ${COPY}.2 ${COPY}.dd ${COPY}.dd2 230180746Sdesrm -rf ${QUOTECOPY} "$SPACECOPY" "$GLOBMETACOPY" 231113908Sdes 232204861Sdes 233