# # @(#) Check services file reloaded after SIGHUP # load_lib "util-defs.exp" # Create a smb.conf file from a list of sections. Each section consists of # a name and a list of lines which are the contents of that section. # Returns a temporary filename which must be deleted after use. proc write_smb_conf { args } { # Set up temporary file set name "/tmp/smb.conf-test-[pid]" set f [open $name "w"] # Parse sections foreach section [lindex $args 0] { set secname [lindex $section 0] set contents [lindex $section 1] puts $f "\[$secname]" foreach { line } $contents { puts $f "\t$line" } puts $f "" } close $f # Return filename of smb.conf file return $name } proc append_smb_conf { args } { set name [lindex $args 0] set f [open $name "a"] foreach section [lindex $args 1] { set secname [lindex $section 0] set contents [lindex $section 1] puts $f "\[$secname]" foreach { line } $contents { puts $f "\t$line" } puts $f "" } close $f } # Create a smb.conf file set smb_conf [list \ [list "global" \ [list "netbios name = testing" \ "guest ok = true"]]] set name [write_smb_conf $smb_conf] # Run smbd and smbclient output set smbd_output [util_start "bin/smbd" "-s $name"] set nmbd_output [util_start "bin/nmbd" "-s $name"] sleep 5 set smbclient_output [util_start "bin/smbclient -L //testing -N"] verbose $smbclient_output if { ![regexp "Anonymous login successful" $smbclient_output] } { untested "smbd could not be started" util_start "killall" "smbd nmbd" file delete $name return } # Append another share and sighup append_smb_conf $name [list [list "tmp" [list "browseable = true"]]] set output [util_start "killall" "-HUP smbd"] verbose $output sleep 2 set smbclient_output2 [util_start "bin/smbclient -L //testing -N"] verbose $smbclient_output2 if { [regexp "tmp.*Disk" $smbclient_output2] } { pass "sighup reload" } else { fail "sighup reload" } # Clean up util_start "killall" "smbd nmbd" file delete $name