我正在 bash 中使用 expect 进行自动传递。代码是;
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 必须在 expect block 中;
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\";
最佳答案
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"
关于linux - ssh-copy id 并在 bash 中期待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11951926/