if [ $? != 0 ] ; then
echo "$out"
echo "command failed"
- false
- return
+ return 1
fi
echo "$out" | grep $prompt >/dev/null 2>&1
if [ $? = 0 ] ; then
# got a prompt .. fail
echo matched interactive prompt in non-interactive mode
- false
- else
- true
+ return 1
fi
+
+ return 0
}
# Test that an interactive smbclient prompts to stdout
if [ $ret != 0 ] ; then
echo "$out"
echo "command failed"
- false
- return
+ return 1
fi
echo "$out" | grep $prompt >/dev/null 2>&1
- if [ $? = 0 ] ; then
- # got a prompt .. succeed
- true
- else
+ if [ $? != 0 ] ; then
echo failed to match interactive prompt on stdout
- false
+ return 1
fi
+
+ return 0
}
# Test creating a bad symlink and deleting it.
if [ $ret != 0 ] ; then
echo "$out"
echo "failed create then delete bad symlink with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep "$prompt" >/dev/null 2>&1
ret=$?
- if [ $ret = 0 ] ; then
- # got the correct prompt .. succeed
- true
- else
+ if [ $ret != 0 ] ; then
echo "$out"
echo "failed create then delete bad symlink - grep failed with $ret"
- false
+ return 1
fi
+
+ return 0
}
# Test creating a good symlink and deleting it by path.
echo "failed delete good symlink with error $ret"
rm $slink_target
rm $slink_name
- false
- return
+ return 1
fi
if [ ! -e $slink_target ] ; then
echo "failed delete good symlink - symlink target deleted !"
rm $slink_target
rm $slink_name
- false
- return
+ return 1
fi
if [ -e $slink_name ] ; then
echo "failed delete good symlink - symlink still exists"
rm $slink_target
rm $slink_name
- false
- else
- # got the correct prompt .. succeed
- rm $slink_target
- true
+ return 1
fi
+
+ rm $slink_target
+ return 0
}
# Test writing into a read-only directory (logon as guest) fails.
##
if [ "$USERID" != 0 ] ; then
echo "skipping test_read_only_dir as non-root"
- true
- return
+ return 0
fi
##
##
if [ "$ADDARGS" = "-e" ] ; then
echo "skipping test_read_only_dir with encrypted connection"
- true
- return
+ return 0
fi
cat > $tmpfile <<EOF
echo "$out"
echo "failed writing into read-only directory with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep "$prompt" >/dev/null 2>&1
ret=$?
- if [ $ret = 0 ] ; then
- # got the correct prompt .. succeed
- true
- else
+ if [ $ret != 0 ] ; then
echo "$out"
echo "failed writing into read-only directory - grep failed with $ret"
- false
+ return 1
fi
+
+ return 0
}
if [ $ret != 0 ] ; then
echo "$out"
echo "failed sending message to $SERVER with error $ret"
- false
rm -f $tmpfile
- return
+ return 1
fi
# The server writes this into a file message.msgtest, via message.%m to test the % sub code
if [ $ret != 0 ] ; then
echo "$out"
echo "failed getting sent message from $SERVER with error $ret"
- false
- return
+ return 1
fi
if [ cmp $PREFIX/message_out.$$ $tmpfile != 0 ] ; then
echo "failed comparison of message from $SERVER"
- false
- return
+ return 1
fi
- true
+
+ return 0
}
# Test reading an owner-only file (logon as guest) fails.
##
if [ "$USERID" != 0 ] ; then
echo "skipping test_owner_only_file as non-root"
- true
- return
+ return 0
fi
##
##
if [ "$ADDARGS" = "-e" ] ; then
echo "skipping test_owner_only_file with encrypted connection"
- true
- return
+ return 0
fi
cat > $tmpfile <<EOF
if [ $ret != 0 ] ; then
echo "$out"
echo "failed reading owner-only file with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep "$prompt" >/dev/null 2>&1
ret=$?
- if [ $ret = 0 ] ; then
- # got the correct prompt .. succeed
- true
- else
+ if [ $ret != 0 ] ; then
echo "$out"
echo "failed reading owner-only file - grep failed with $ret"
- false
+ return 1
fi
+
+ return 0
}
# Test accessing an msdfs path.
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing msfds-share\ with error $ret"
- false
- return
+ return 1
fi
cat > $tmpfile <<EOF
if [ $ret != 0 ] ; then
echo "$out"
echo "failed accessing \\msdfs-src1 link with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep "$prompt" >/dev/null 2>&1
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\msdfs-src1 - grep failed with $ret"
- false
+ return 1
fi
cat > $tmpfile <<EOF
if [ $ret != 0 ] ; then
echo "$out"
echo "failed accessing \\deeppath\\msdfs-src2 link with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep "$prompt" >/dev/null 2>&1
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\deeppath\\msdfs-src2 - grep failed with $ret"
- false
- return
- else
- true
- return
+ return 1
fi
+
+ return 0
}
# Archive bits are correctly set on file/dir creation and rename.
if [ $ret != 0 ] ; then
echo "$out"
echo "failed creating file $filename with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep "$prompt_file" >/dev/null 2>&1
rm -f $local_name1
rm -f $local_name2
- if [ $ret = 0 ] ; then
- # got the correct prompt .. succeed
- true
- else
+ if [ $ret != 0 ] ; then
echo "$out"
echo "Attributes incorrect on new file $ret"
- false
+ return 1
fi
# Now check if we remove 'A' and rename, the A comes back.
if [ $ret != 0 ] ; then
echo "$out"
echo "failed creating file and renaming $filename with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep "$prompt_file" >/dev/null 2>&1
rm -f $local_name1
rm -f $local_name2
- if [ $ret = 0 ] ; then
- # got the correct prompt .. succeed
- true
- else
+ if [ $ret != 0 ] ; then
echo "$out"
echo "Attributes incorrect on renamed file $ret"
- false
+ return 1
fi
rm -rf $local_dir_name1
if [ $ret != 0 ] ; then
echo "$out"
echo "failed creating directory $dirname with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep "$prompt_dir" >/dev/null 2>&1
rm -rf $local_dir_name1
rm -rf $local_dir_name2
- if [ $ret = 0 ] ; then
- # got the correct prompt .. succeed
- true
- else
+ if [ $ret != 0 ] ; then
echo "$out"
echo "Attributes incorrect on new directory $ret"
- false
+ return 1
fi
# Now check if we rename, we still only have 'D' attributes
if [ $ret != 0 ] ; then
echo "$out"
echo "failed creating directory $dirname and renaming with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep "$prompt_dir" >/dev/null 2>&1
rm -f $local_name1
rm -f $local_name2
- if [ $ret = 0 ] ; then
- # got the correct prompt .. succeed
- true
- else
+ if [ $ret != 0 ] ; then
echo "$out"
echo "Attributes incorrect on renamed directory $ret"
- false
+ return 1
fi
+
+ return 0
}
# Test authenticating using the winbind ccache
if [ $ret != 0 ] ; then
echo "wbinfo failed to store creds in cache (user='${USERNAME}', pass='${PASSWORD}')"
- false
- return
+ return 1
fi
$SMBCLIENT //$SERVER_IP/tmp -C -U "${USERNAME}" $ADDARGS -c quit 2>&1
if [ $ret != 0 ] ; then
echo "smbclient failed to use cached credentials"
- false
- return
+ return 1
fi
$WBINFO --ccache-save="${USERNAME}%GarBage"
if [ $ret != 0 ] ; then
echo "wbinfo failed to store creds in cache (user='${USERNAME}', pass='GarBage')"
- false
- return
+ return 1
fi
$SMBCLIENT //$SERVER_IP/tmp -C -U "${USERNAME}" $ADDARGS -c quit 2>&1
if [ $ret -eq 0 ] ; then
echo "smbclient succeeded with wrong cached credentials"
- false
- return
+ return 1
fi
$WBINFO --logoff
if [ $ret != 0 ] ; then
echo "smbclient failed to use auth file"
- false
- return
+ return 1
fi
cat > $tmpfile <<EOF
if [ $ret -eq 0 ] ; then
echo "smbclient succeeded with wrong auth file credentials"
- false
- return
+ return 1
fi
}
ret=$?
if [ $ret != 0 ] ; then
echo "Failed to add SeBackupPrivilege to user $priv_username - $ret"
- false
- return
+ return 1
fi
cat > $tmpfile <<EOF
if [ $ret != 0 ] ; then
echo "$out"
echo "failed backup privilege list $ret"
- false
- return
+ return 1
fi
# Now remove all privileges from this SID.
ret=$?
if [ $ret != 0 ] ; then
echo "failed to remove SeBackupPrivilege from user $priv_username - $ret"
- false
- return
+ return 1
fi
}
if [ $ret != 0 ] ; then
echo "$out"
echo "failed accessing badname-tmp (SMB1) with error $ret"
- false
- return
+ return 1
fi
echo "$out" | wc -l 2>&1 | grep 6
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - grep of number of lines (1) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep 'Domain=.*OS=.*Server='
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - grep (1) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep '^ \. *D'
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - grep (2) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep '^ \.\. *D'
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - grep (3) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep '^ blank.txt *N'
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - grep (4) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep '^ *$'
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - grep (5) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep 'blocks of size.*blocks available'
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - grep (6) failed with $ret"
- false
+ return 1
fi
# Now check again with -mSMB3
if [ $ret != 0 ] ; then
echo "$out"
echo "failed accessing badname-tmp (SMB3) with error $ret"
- false
- return
+ return 1
fi
echo "$out" | wc -l 2>&1 | grep 6
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - SMB3 grep of number of lines (1) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep 'Domain=.*OS=.*Server='
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - SMB3 grep (1) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep '^ \. *D'
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - SMB3 grep (2) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep '^ \.\. *D'
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - SMB3 grep (3) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep '^ blank.txt *N'
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - SMB3 grep (4) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep '^ *$'
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - SMB3 grep (5) failed with $ret"
- false
+ return 1
fi
echo "$out" | grep 'blocks of size.*blocks available'
if [ $ret != 0 ] ; then
echo "$out"
echo "failed listing \\badname-tmp - SMB3 grep (6) failed with $ret"
- false
+ return 1
fi
}
if [ $ret != 0 ] ; then
echo "$out"
echo "failed accessing manglenames_share with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep 'NT_STATUS'
if [ $ret == 0 ] ; then
echo "$out"
echo "failed - NT_STATUS_XXXX listing \\manglenames_share\\FF4GBY~Q"
- false
+ return 1
fi
}
if [ $ret != 0 ] ; then
echo "$out"
echo "failed scopy test (1) with output $ret"
- false
- return
+ return 1
fi
if [ $out1 != $out2 ] ; then
echo "$out1 $out2"
echo "failed md5sum (1)"
- false
+ return 1
fi
#
if [ $ret != 0 ] ; then
echo "$out"
echo "failed scopy test (2) with output $ret"
- false
- return
+ return 1
fi
if [ $out1 != $out2 ] ; then
echo "$out1 $out2"
echo "failed md5sum (2)"
- false
+ return 1
fi
}
if [ $ret != 0 ] ; then
echo "$out"
echo "failed creating toplevel stream :foobar with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep '^stream:.*:foobar'
if [ $ret != 0 ] ; then
echo "$out"
echo "failed creating toplevel stream :foobar"
- false
+ return 1
fi
}
if [ $ret != 0 ] ; then
echo "$out"
echo "failed accessing widelinks_share with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep 'NT_STATUS'
if [ $ret == 0 ] ; then
echo "$out"
echo "failed - NT_STATUS_XXXX listing \\widelinks_share\\dot"
- false
+ return 1
fi
cat > $tmpfile <<EOF
if [ $ret != 0 ] ; then
echo "$out"
echo "failed accessing widelinks_share with error $ret"
- false
- return
+ return 1
fi
# This should fail with NT_STATUS_ACCESS_DENIED
if [ $ret != 0 ] ; then
echo "$out"
echo "failed - should get NT_STATUS_ACCESS_DENIED listing \\widelinks_share\\source"
- false
+ return 1
fi
}
if [ $ret != 0 ] ; then
echo "$out"
echo "failed creating then deleting foo:bar with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep 'NT_STATUS_NO_SUCH_FILE listing \\lost\*'
echo "$out"
echo "deleting foo:bar left lost-XXX directory"
rm -rf "$LOCAL_PATH/lost-*"
- false
- return
+ return 1
fi
}
if [ $ret -ne 0 ] ; then
echo "$out"
echo "failed accessing nosymlinks with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep 'NT_STATUS_ACCESS_DENIED'
if [ $ret -ne 0 ] ; then
echo "$out"
echo "failed - should get NT_STATUS_ACCESS_DENIED getting \\nosymlinks\\source"
- false
- return
+ return 1
fi
# But we should be able to create and delete directories.
if [ $ret -ne 0 ] ; then
echo "$out"
echo "failed accessing nosymlinks with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep 'NT_STATUS'
if [ $ret -eq 0 ] ; then
echo "$out"
echo "failed - NT_STATUS_XXXX doing mkdir a; mkdir a\\b on \\nosymlinks"
- false
+ return 1
fi
# Ensure regular file/directory access also works.
if [ $ret -ne 0 ] ; then
echo "$out"
echo "failed accessing nosymlinks with error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep 'NT_STATUS'
if [ $ret -eq 0 ] ; then
echo "$out"
echo "failed - NT_STATUS_XXXX doing cd foo\\bar; get testfile on \\nosymlinks"
- false
- return
+ return 1
fi
}
if [ $ret -ne 0 ] ; then
echo "$out"
echo "failed to connect error $ret"
- false
- return
+ return 1
fi
echo "$out" | grep "Domain=\[[a-zA-Z][a-zA-Z0-9.-]*\] OS=\[Windows [0-9]\.[0-9]\] Server=\[Samba"
if [ $ret -ne 0 ] ; then
echo "$out"
echo "failed - should get: Domain=[...] OS=[Windows 6.1] Server=..."
- false
- return
+ return 1
fi
+
+ return 0
}
LOGDIR_PREFIX=test_smbclient_s3