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 に答える