How do I get the result of a remote command when I have to pass through a third host?

[Explain pertinence--typical situations (firewalling), ...]

Phaseit 2009]

[Explain configurations.]

This particular model first ssh-s to a machine which demands a passphrase, then ssh-s to a third host, where, after a demand for a password, it requests a directory listing of the home directory: ls.

package require Expect
set command ls

set timeout -1
  # That's silly; next time just "spawn ssh ..." directly.
spawn $env(SHELL)
match_max 100000
log_user 0
expect $prompt0
send -- "ssh $user1@$host1\r"
expect -glob "Enter passphrase for key '*': "
send -- $passphrase1\r
expect $prompt1
send -- "ssh $user2@$host2 $command\r"
expect  "assword: "
send -- $password2\r
expect $prompt1
set presult $expect_out(buffer)
send -- exit\r
expect $prompt0
send -- exit\r
expect eof

   # $presult deserves a little prettification--stripping off the last line, ...
puts $presult