1 | #!/bin/sh
|
---|
2 | # Blackbox tests for smbclient
|
---|
3 | # Copyright (C) 2006-2007 Jelmer Vernooij <jelmer@samba.org>
|
---|
4 | # Copyright (C) 2006-2007 Andrew Bartlett <abartlet@samba.org>
|
---|
5 |
|
---|
6 | if [ $# -lt 5 ]; then
|
---|
7 | cat <<EOF
|
---|
8 | Usage: test_smbclient.sh SERVER USERNAME PASSWORD DOMAIN PREFIX
|
---|
9 | EOF
|
---|
10 | exit 1;
|
---|
11 | fi
|
---|
12 |
|
---|
13 | SERVER=$1
|
---|
14 | USERNAME=$2
|
---|
15 | PASSWORD=$3
|
---|
16 | DOMAIN=$4
|
---|
17 | PREFIX=$5
|
---|
18 | shift 5
|
---|
19 | failed=0
|
---|
20 |
|
---|
21 | samba4bindir="$BUILDDIR/bin"
|
---|
22 | smbclient="$samba4bindir/smbclient$EXEEXT"
|
---|
23 |
|
---|
24 | . `dirname $0`/../../../testprogs/blackbox/subunit.sh
|
---|
25 |
|
---|
26 | runcmd() {
|
---|
27 | name="$1"
|
---|
28 | cmd="$2"
|
---|
29 | shift
|
---|
30 | shift
|
---|
31 | echo "test: $name"
|
---|
32 | $VALGRIND $smbclient $CONFIGURATION //$SERVER/tmp -c "$cmd" -W "$DOMAIN" -U"$USERNAME%$PASSWORD" $@
|
---|
33 | status=$?
|
---|
34 | if [ x$status = x0 ]; then
|
---|
35 | echo "success: $name"
|
---|
36 | else
|
---|
37 | echo "failure: $name"
|
---|
38 | fi
|
---|
39 | return $status
|
---|
40 | }
|
---|
41 |
|
---|
42 | testit "share and server list" $VALGRIND $smbclient -L $SERVER $CONFIGURATION -W "$DOMAIN" -U"$USERNAME%$PASSWORD" $@ || failed=`expr $failed + 1`
|
---|
43 |
|
---|
44 | testit "share and server list anonymously" $VALGRIND $smbclient -N -L $SERVER $CONFIGURATION $@ || failed=`expr $failed + 1`
|
---|
45 |
|
---|
46 | # Use the smbclient binary as our test file
|
---|
47 | cat $smbclient >tmpfile
|
---|
48 |
|
---|
49 | # put that file
|
---|
50 | runcmd "MPutting file" 'mput tmpfile' || failed=`expr $failed + 1`
|
---|
51 | # check file info
|
---|
52 | runcmd "Getting alternative name" 'altname tmpfile'|| failed=`expr $failed + 1`
|
---|
53 | # run allinfo on that file
|
---|
54 | runcmd "Checking info on file" 'allinfo tmpfile'|| failed=`expr $failed + 1`
|
---|
55 | # get that file
|
---|
56 | mv tmpfile tmpfile-old
|
---|
57 | runcmd "MGetting file" 'mget tmpfile' || failed=`expr $failed + 1`
|
---|
58 | # remove that file
|
---|
59 | runcmd "Removing file" 'rm tmpfile' || failed=`expr $failed + 1`
|
---|
60 | # compare locally
|
---|
61 | testit "Comparing files" diff tmpfile-old tmpfile || failed=`expr $failed + 1`
|
---|
62 | # create directory
|
---|
63 | # cd to directory
|
---|
64 | # cd to top level directory
|
---|
65 | # remove directory
|
---|
66 | runcmd "Creating directory, Changing directory, Going back" 'mkdir bla; cd bla; cd ..; rmdir bla' || failed=`expr $failed + 1`
|
---|
67 | # enable recurse, create nested directory
|
---|
68 | runcmd "Creating nested directory" 'mkdir bla/bloe' || failed=`expr $failed + 1`
|
---|
69 | # remove child directory
|
---|
70 | runcmd "Removing directory" 'rmdir bla/bloe' || failed=`expr $failed + 1`
|
---|
71 | # remove parent directory
|
---|
72 | runcmd "Removing directory" 'rmdir bla'|| failed=`expr $failed + 1`
|
---|
73 | # enable recurse, create nested directory
|
---|
74 | runcmd "Creating nested directory" 'mkdir bla' || failed=`expr $failed + 1`
|
---|
75 | # rename bla to bla2
|
---|
76 | runcmd "rename of nested directory" 'rename bla bla2' || failed=`expr $failed + 1`
|
---|
77 | # deltree
|
---|
78 | runcmd "deltree of nested directory" 'deltree bla2' || failed=`expr $failed + 1`
|
---|
79 | # run fsinfo
|
---|
80 | runcmd "Getting file system info" 'fsinfo allocation'|| failed=`expr $failed + 1`
|
---|
81 | runcmd "Getting file system info" 'fsinfo volume'|| failed=`expr $failed + 1`
|
---|
82 | runcmd "Getting file system info" 'fsinfo volumeinfo'|| failed=`expr $failed + 1`
|
---|
83 | runcmd "Getting file system info" 'fsinfo sizeinfo'|| failed=`expr $failed + 1`
|
---|
84 | runcmd "Getting file system info" 'fsinfo deviceinfo'|| failed=`expr $failed + 1`
|
---|
85 | runcmd "Getting file system info" 'fsinfo attributeinfo'|| failed=`expr $failed + 1`
|
---|
86 | runcmd "Getting file system info" 'fsinfo volume-information'|| failed=`expr $failed + 1`
|
---|
87 | runcmd "Getting file system info" 'fsinfo size-information'|| failed=`expr $failed + 1`
|
---|
88 | runcmd "Getting file system info" 'fsinfo device-information'|| failed=`expr $failed + 1`
|
---|
89 | runcmd "Getting file system info" 'fsinfo attribute-information'|| failed=`expr $failed + 1`
|
---|
90 | runcmd "Getting file system info" 'fsinfo quota-information'|| failed=`expr $failed + 1`
|
---|
91 | runcmd "Getting file system info" 'fsinfo fullsize-information'|| failed=`expr $failed + 1`
|
---|
92 | runcmd "Getting file system info" 'fsinfo objectid'|| failed=`expr $failed + 1`
|
---|
93 |
|
---|
94 | # put that file
|
---|
95 | runcmd "Putting file" 'put tmpfile'|| failed=`expr $failed + 1`
|
---|
96 | # get that file
|
---|
97 | mv tmpfile tmpfile-old
|
---|
98 | runcmd "Getting file" 'get tmpfile'|| failed=`expr $failed + 1`
|
---|
99 | runcmd "Getting file EA info" 'eainfo tmpfile'|| failed=`expr $failed + 1`
|
---|
100 | # remove that file
|
---|
101 | runcmd "Removing file" 'rm tmpfile' || failed=`expr $failed + 1`
|
---|
102 | # compare locally
|
---|
103 | testit "Comparing files" diff tmpfile-old tmpfile || failed=`expr $failed + 1`
|
---|
104 | # put that file
|
---|
105 | runcmd "Putting file with different name" 'put tmpfile tmpfilex' || failed=`expr $failed + 1`
|
---|
106 | # get that file
|
---|
107 | runcmd "Getting file again" 'get tmpfilex' || failed=`expr $failed + 1`
|
---|
108 | # compare locally
|
---|
109 | testit "Comparing files" diff tmpfilex tmpfile || failed=`expr $failed + 1`
|
---|
110 | # remove that file
|
---|
111 | runcmd "Removing file" 'rm tmpfilex'|| failed=`expr $failed + 1`
|
---|
112 |
|
---|
113 | runcmd "Lookup name" "lookup $DOMAIN\\$USERNAME" || failed=`expr $failed + 1`
|
---|
114 |
|
---|
115 | #Fails unless there are privileges
|
---|
116 | #runcmd "Lookup privs of name" "privileges $DOMAIN\\$USERNAME" || failed=`expr $failed + 1`
|
---|
117 |
|
---|
118 | # do some simple operations using old protocol versions
|
---|
119 | runcmd "List directory with LANMAN1" 'ls' -m LANMAN1 || failed=`expr $failed + 1`
|
---|
120 | runcmd "List directory with LANMAN2" 'ls' -m LANMAN2 || failed=`expr $failed + 1`
|
---|
121 |
|
---|
122 | runcmd "Print current working directory" 'pwd'|| failed=`expr $failed + 1`
|
---|
123 |
|
---|
124 | (
|
---|
125 | echo "password=$PASSWORD"
|
---|
126 | echo "username=$USERNAME"
|
---|
127 | echo "domain=$DOMAIN"
|
---|
128 | ) > tmpauthfile
|
---|
129 |
|
---|
130 | testit "Test login with --authentication-file" $VALGRIND $smbclient -c 'ls' $CONFIGURATION //$SERVER/tmp --authentication-file=tmpauthfile || failed=`expr $failed + 1`
|
---|
131 |
|
---|
132 | PASSWD_FILE="tmppassfile"
|
---|
133 | echo "$PASSWORD" > $PASSWD_FILE
|
---|
134 | export PASSWD_FILE
|
---|
135 | testit "Test login with PASSWD_FILE" $VALGRIND $smbclient -c 'ls' $CONFIGURATION //$SERVER/tmp -W "$DOMAIN" -U"$USERNAME" || failed=`expr $failed + 1`
|
---|
136 | PASSWD_FILE=""
|
---|
137 | export PASSWD_FILE
|
---|
138 | unset PASSWD_FILE
|
---|
139 |
|
---|
140 | PASSWD="$PASSWORD"
|
---|
141 | export PASSWD
|
---|
142 | testit "Test login with PASSWD" $VALGRIND $smbclient -c 'ls' $CONFIGURATION //$SERVER/tmp -W "$DOMAIN" -U"$USERNAME" || failed=`expr $failed + 1`
|
---|
143 |
|
---|
144 | oldUSER=$USER
|
---|
145 | USER="$USERNAME"
|
---|
146 | export USER
|
---|
147 | testit "Test login with USER and PASSWD" $VALGRIND $smbclient -k no -c 'ls' $CONFIGURATION //$SERVER/tmp -W "$DOMAIN" || failed=`expr $failed + 1`
|
---|
148 | PASSWD=
|
---|
149 | export PASSWD
|
---|
150 | unset PASSWD
|
---|
151 | USER=$oldUSER
|
---|
152 | export USER
|
---|
153 |
|
---|
154 | rm -f tmpfile tmpfile-old tmpfilex tmpauthfile tmppassfile
|
---|
155 | exit $failed
|
---|