svn commit: samba r16508 - in branches/SOC/bnh/expect: .

brad at samba.org brad at samba.org
Sat Jun 24 23:51:09 GMT 2006


Author: brad
Date: 2006-06-24 23:51:08 +0000 (Sat, 24 Jun 2006)
New Revision: 16508

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16508

Log:
Added copy_file function, to copy a text file from the local unix host to the remote windows host.


Modified:
   branches/SOC/bnh/expect/common.exp


Changeset:
Modified: branches/SOC/bnh/expect/common.exp
===================================================================
--- branches/SOC/bnh/expect/common.exp	2006-06-24 23:34:44 UTC (rev 16507)
+++ branches/SOC/bnh/expect/common.exp	2006-06-24 23:51:08 UTC (rev 16508)
@@ -2,6 +2,69 @@
 # Copyright Brad Henry <brad at samba.org> 2006
 # Released under the GNU GPL v2 or later.
 
+# This function copies a text file over telnet from the local unix host
+# to the remote windows host.
+proc copy_file { remote_prompt in_filename out_filename } {
+	set default_err_str "Unknown error in function copy_file"
+	set err_str $default_err_str
+	
+	# The octal ASCII code for Control-Z is 032.
+	set CTRLZ \032
+
+	# Open local file and read contents.
+	set in_file [open $in_filename r]
+	set in_data [read $in_file]
+
+	# Initiate copy on remote host.
+	set cmd "copy con $out_filename\r"
+	send $cmd
+
+	# Separate $in_data into lines and send to remote host.
+	set out_data [split $in_data "\n"]
+	foreach out_line $out_data {
+		send $out_line
+		# We might as well do a unix -> windows line conversion.
+		send "\r\n"
+		# Are we overwriting an existing file?
+		# If so, exit so we can handle it.
+		expect {
+			"(Yes/No/All)" {
+				send "NO\r"
+				expect_prompt $remote_prompt
+				set err_str "File exists"
+			} \
+			$out_line {
+				set err_str "OK"
+			} \
+			timeout {
+				set err_str "Function copy_file timed out while copying $in_filename"
+			}
+		}
+		if { $err_str != "OK" } {
+			return $err_str
+		} else {
+			set err_str $default_err_str
+		}
+	}
+
+	# ^Z\r to complete the transfer.
+	send $CTRLZ
+	send "\r"
+	expect {
+		"file(s) copied." {
+			set err_str [expect_prompt $remote_prompt]
+		} \
+		$remote_prompt {
+			set err_str $default_err_str
+		} \
+		timeout {
+			expect_prompt $remote_prompt
+			set err_str "Function copy_file timed out while finishing copy of $in_filename"
+		}
+	}
+	return $err_str
+}
+
 # This function waits for the command prompt and reports an error on
 # timeout.
 proc expect_prompt { remote_prompt } {



More information about the samba-cvs mailing list