1

I am making auto-pass with expect in bash.The code is;

ssh-copy-id -i $SSH_KEY_PATH_PUB $REMOTE_HOST_USER@$REMOTE_HOST_IP (here asks pass)

VAR=$(expect -c" 
     expect "*?assword:*"
     send "$REMOTE_HOST_PASSWD\r";
     send -- "\r"
     expect eof
     ")

echo "$VAR"

It still asks password.what is the problem

SOLVED: ssh-copy-id -i $SSH_KEY_PATH_PUB $REMOTE_HOST_USER@$REMOTE_HOST_IP must be in expect block as;

spawn ssh-copy-id -i $SSH_KEY_PATH_PUB $REMOTE_HOST_USER@$REMOTE_HOST_IP

and the line

 send "$REMOTE_HOST_PASSWD\r";

must be

send \"$REMOTE_HOST_PASSWD\r\";
barp
  • 6,489
  • 9
  • 30
  • 37
  • Have you seen this question? [Use expect in bash script to provide password to SSH command](http://stackoverflow.com/questions/4780893/use-expect-in-bash-script-to-provide-password-to-ssh-command?rq=1) – Hasturkun Aug 14 '12 at 12:11
  • Why not use key based authentication? – Anders Aug 14 '12 at 13:19

1 Answers1

1
VAR=$(expect -c "expect '' \
  {eval spawn \
  ssh-copy-id -i $SSH_KEY_PATH_PUB $REMOTE_HOST_USER@$REMOTE_HOST_IP; \
  interact -o -nobuffer -re .*assword.* return; \
  send "$REMOTE_HOST_PASSWD\r"; send -- "\r"; \
  expect eof;} ")

echo "$VAR"
perreal
  • 94,503
  • 21
  • 155
  • 181