Whamcloud - gitweb
LU-10657 utils: fd leak in mirror_split()
[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 }
55
56 restore_config_smb() {
57         local smbsrv=${1}
58         local smbconftmp=${2}
59         local smbconf
60
61         smbconf=$(do_node $smbsrv \
62                 smbd -b | grep CONFIGFILE | sed -re 's/\s+CONFIGFILE: //g')
63
64         echo -e "\nRestoring smb config from $smbconftmp ..."
65         do_node $smbsrv "cp $smbconftmp $smbconf"
66 }
67
68 setup_cifs() {
69         local smbsrv=${1}
70         local smbshare=${2}
71         local smbclimntpt=${3}
72         local smbuser=${4}
73         local smbpasswd=${5}
74         local smbclients=${6}
75
76         do_node $smbsrv "service smb restart" || return 1
77         local parameter_path=$(do_node $smbsrv \
78                 "testparm -s --section-name $smbshare --parameter-name path 2> /dev/null")
79         [[ -z $parameter_path ]] && return 1
80         do_nodesv $smbsrv "chmod a+xrw $parameter_path"
81         do_nodesv $smbsrv "ls -ald $parameter_path"
82
83         local cmd="mount -t cifs //$smbsrv/$smbshare $smbclimntpt -o user=$smbuser,pass=$smbpasswd"
84         echo -e "\nMounting CIFS clients $smbclients : $cmd"
85         do_nodesv $smbclients "$cmd" || return 1
86         do_nodesv $smbclients mount | grep $smbclimntpt
87 }
88
89 cleanup_cifs() {
90         local smbsrv=${1}
91         local smbclimntpt=${2}
92         local smbclients=${3}
93
94         echo -e "\nUnmounting CIFS clients..."
95         do_nodes $smbclients "umount -f $smbclimntpt" || return 1
96         do_node $smbsrv "service smb stop"
97 }