1

我正在用 bash 中的期望进行自动传递。代码是;

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"

它仍然询问密码。这是什么问题

已解决:ssh-copy-id -i $SSH_KEY_PATH_PUB $REMOTE_HOST_USER@$REMOTE_HOST_IP 必须在期望块中;

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

和线

 send "$REMOTE_HOST_PASSWD\r";

一定是

send \"$REMOTE_HOST_PASSWD\r\";
4

1 回答 1

0
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"
于 2012-08-14T12:24:02.230 回答