title: Using expect script to do an ssh from a remote machine
body: <p>I am new to expect scripts and have a use case in which I need to do an ssh from a machine in which I have already done an ssh using expect script. This is my code snippet</p>
  
  <pre><code>#!/usr/bin/expect -f
  set timeout 60
  spawn ssh username@machine1.domain.com
  
  expect "Password: "
  send "Password\r"
  
  send "\r" # This is successful. I am able to login successfully to the first machine
  
  set timeout 60
  spawn ssh username@machine2.domain.com  #This fails
  </code></pre>
  
  <p>This takes a some amount of time and fails saying 
  ssh: connect to host machine2.domain.com port 22: Operation timed out. I understand that 22 is the default port on which ssh runs and I can manually override it by giving a -p option to ssh.</p>
  
  <p>If I try to ssh independently without the expect script I get a prompt that asks me to enter (yes/no). From where is the correct port being picked up if I execute ssh directly without the expect script. If I do not need to enter the port number on shell why would it be needed to enter a port number if I am using an expect script.</p>