1# An expect script to setup a directory and share for an smbtorture test. 2# Copyright Brad Henry <brad@samba.org> 2006 3# Released under the GNU GPL version 3 or later. 4 5proc setup_test { remote_prompt sharepath sharename username local_hostname \ 6 local_ip hosts_file_path backup_hosts_filename } { 7 8 # If creating the directory fails, remove, then 9 # re-create the directory. 10 set err_str [create_directory $remote_prompt $sharepath] 11 if { $err_str != "OK" } { 12 if { $err_str != "Directory already exists" } { 13 puts stderr "\nUnexpected error occurred in setup_test.\n" 14 puts stderr "Function create_directory returned $err_str." 15 } else { 16 puts stdout "\nDirectory $sharepath exists." 17 } 18 puts stdout "Re-creating directory $sharepath." 19 20 set err_str [delete_directory $remote_prompt $sharepath] 21 if { $err_str != "OK" } { 22 return $err_str 23 } 24 set err_str [create_directory $remote_prompt $sharepath] 25 if { $err_str != "OK" } { 26 return $err_str 27 } 28 } 29 30 # If creating the share fails, remove, then 31 # re-create the share. 32 set err_str [create_share $remote_prompt $username $sharepath \ 33 $sharename] 34 if { $err_str != "OK" } { 35 if { $err_str != "The name has already been shared" } { 36 puts stderr "\nUnexpected error occurred in setup_test." 37 puts stderr "Function create_share returned $err_str." 38 } else { 39 puts stdout "\nShare $sharename exists." 40 } 41 puts stdout "Re-creating share $sharename." 42 43 set err_str [delete_share $remote_prompt $sharename] 44 if { $err_str != "OK" } { 45 return $err_str 46 } 47 set err_str [create_share $remote_prompt $username $sharepath \ 48 $sharename] 49 if { $err_str != "OK" } { 50 return $err_str 51 } 52 } 53 54 # Add a hosts file entry on the windows machine for the smbtorture host. 55 set err_str [create_hosts_entry $remote_prompt $hosts_file_path \ 56 $local_hostname $local_ip $backup_hosts_filename] 57 return $err_str 58} 59 60# Read parameters. 61set remote_host $env(SMBTORTURE_REMOTE_HOST) 62set remote_prompt $env(SMBTORTURE_REMOTE_PROMPT) 63 64set username $env(SMBTORTURE_USERNAME) 65set password $env(SMBTORTURE_PASSWORD) 66 67set timeout $env(SMBTORTURE_EXPECT_TIMEOUT) 68 69set sharepath $env(SMBTORTURE_REMOTE_SHARE_PATH) 70set sharename $env(SMBTORTURE_REMOTE_SHARE_NAME) 71 72set local_hostname $env(SMBTORTURE_LOCAL_HOSTNAME) 73set local_ip $env(SMBTORTURE_LOCAL_IP) 74 75set backup_hosts_filename $env(REMOTE_BACKUP_HOSTS_FILENAME) 76set hosts_file_path $env(REMOTE_HOSTS_FILE_PATH) 77 78set err_val [spawn $env(SHELL)] 79if {$err_val == 0} { 80 puts stderr "Expect failed while spawning a shell process." 81 exit $err_val 82} 83 84set err_str [telnet_login $remote_prompt $remote_host $username $password] 85if {$err_str != "OK"} { 86 puts stderr "\nFunction telnet_login failed during setup." 87 puts stderr "Error was: $err_str." 88 exit 1 89} 90 91set err_str [setup_test $remote_prompt $sharepath $sharename $username \ 92 $local_hostname $local_ip $hosts_file_path \ 93 $backup_hosts_filename] 94if {$err_str != "OK"} { 95 puts stderr "\nFunction setup_test failed during setup." 96 puts stderr "Error was: $err_str." 97 # Log off from the telnet server. 98 send "exit\r\n" 99 exit 1 100} 101 102# Log off from the telnet server. 103send "exit\r\n" 104exit 0 105