Whamcloud - gitweb
LU-15103 tests: clean up busy cifs mount
[fs/lustre-release.git] / lustre / tests / setup-cifs.sh
1 #!/bin/bash
2
3 # Requires the pre-configured samba machine
4 # RPMS required are :
5 # server:
6 #      samba
7 #      samba-common
8 #      cifs-utils
9 # clients:
10 #      samba-client
11 #      samba-common
12 #      cifs-utils
13
14 #set -vx
15
16 smb_status() {
17         local smbsrv=${1}
18         local rc=0
19
20         do_node $smbsrv "service smb status" || rc=$?
21         return $rc
22 }
23
24 configure_smb() {
25         local smbsrv=${1}
26         local smbshare=${2}
27         local smbuser=${3}
28         local smbpasswd=${4}
29         local path=${5}
30         local smbconftmp=${6}
31         local smbconf
32         local path
33
34         smbconf=$(do_node $smbsrv \
35                 smbd -b | grep CONFIGFILE | sed -re 's/\s+CONFIGFILE: //g')
36         grep -q $smbshare $smbconf && return
37
38         do_node $smbsrv "cp $smbconf $smbconftmp"
39         do_node $smbsrv "cat <<EOF >> $smbconf
40         [$smbshare]
41         path = $path
42         browseable = yes
43         writable = yes
44         guest ok = yes
45         write list = $smbuser
46 EOF"
47         # The samba daemons are constantly (once every 60 seconds) checking the
48         # smb.conf file, so it is good practice to keep this file small.
49         local smbsmall=$(do_nodes $smbsrv "mktemp -t smb.conf.small.XXX")
50         do_node $smbsrv "testparm -s >$smbsmall"
51         do_node $smbsrv "testparm -s $smbsmall >$smbconf"
52
53         do_node $smbsrv "echo $smbpasswd | tee - | smbpasswd -a $smbuser -s" ||
54                 do_node $smbsrv "printf '$smbpasswd\n$smbpasswd\n' |\
55                         tee - | smbpasswd -a $smbuser -s"
56 }
57
58 restore_config_smb() {
59         local smbsrv=${1}
60         local smbconftmp=${2}
61         local smbconf
62
63         smbconf=$(do_node $smbsrv \
64                 smbd -b | grep CONFIGFILE | sed -re 's/\s+CONFIGFILE: //g')
65
66         echo -e "\nRestoring smb config from $smbconftmp ..."
67         do_node $smbsrv "cp $smbconftmp $smbconf"
68 }
69
70 setup_cifs() {
71         local smbsrv=${1}
72         local smbshare=${2}
73         local smbclimntpt=${3}
74         local smbuser=${4}
75         local smbpasswd=${5}
76         local smbclients=${6}
77
78         do_node $smbsrv "service smb restart" || return 1
79         local parameter_path=$(do_node $smbsrv \
80                 "testparm -s --section-name $smbshare --parameter-name path 2> /dev/null")
81         [[ -z $parameter_path ]] && return 1
82         do_nodesv $smbsrv "chmod a+xrw $parameter_path"
83         do_nodesv $smbsrv "ls -ald $parameter_path"
84
85         local cmd="mount -t cifs //$smbsrv/$smbshare $smbclimntpt -o user=$smbuser,pass=$smbpasswd"
86         echo -e "\nMounting CIFS clients $smbclients : $cmd"
87         do_nodesv $smbclients "$cmd" || return 1
88         do_nodesv $smbclients mount | grep $smbclimntpt
89 }
90
91 cleanup_cifs() {
92         local smbsrv=${1}
93         local smbclimntpt=${2}
94         local smbclients=${3}
95
96         echo -e "\nUnmounting CIFS clients..."
97         zconf_umount_clients $smbclients $smbclimntpt -f || return 1
98         do_node $smbsrv "service smb stop"
99 }