There turns out not to be a single right answer. Here are several small essays on the question:
package require Expect
log_user 0
spawn ssh [email protected]
expect {assword: }
send $password\r
expect $prompt
send "grep $pattern $filename\r"
expect -re "\[^\n]*\n(.*)\n.*$prompt"
puts $expect_out(1,string)
send exit\r
expect eof[Show how to put it in a proc.]
[Show an RE-free version.]
[Show a more max_match-resistant version.]
[Introduce exception-handling.]
[Illustrate reliance on "How to access the result of a remote command in Expect"]
NEM offers:
proc remote {user host command args} {
exec ssh $user@$host $command {*}$args
}
remote $me $myhost grep foo /etc/passwdWill the original requestor be able to say
set result [remote $me $myhost grep foo /etc/passwd]
and have the result of the command in $result?
I tried the example, but the ssh on my machine is somehow incompatible with the ssh on my $myhost. I know the error I received wasn't in $result though.