Je connais l'authentification RSA, mais pour mes besoins, je veux utiliser un heredoc pour spécifier le mot de passe. Je veux quelque chose comme ce qui suit, mais je ne peux pas le faire fonctionner. Est-ce seulement possible?Puis-je utiliser un heredoc pour entrer un mot de passe dans bash?
#!/bin/bash
echo -n "Enter Password: "
read -s password
ssh myhost << EOL
$password
echo "I'm logged onto myhost"
EOL
echo done
C'est ce que je reçois quand je l'essayer:
$ ./testssh
Enter Password:
Pseudo-terminal will not be allocated because stdin is not a terminal.
[email protected]'s password:
Warning: No xauth data; using fake authentication data for X11 forwarding.
Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.
mypassword: Command not found.
I'm logged onto myhost
done
EDIT:
Sur la base de la réponse de bmargulies, j'ai retravaillé mon script et est venu avec les éléments suivants:
#!/bin/bash
echo -n "Enter the Host: "
read HOST
echo -n "Enter Username: "
read USER
echo -n "Enter Password: "
read -s PASS
VAR=$(expect -c "
spawn ssh [email protected]$HOST
expect \"password:\"
send \"$PASS\r\"
expect \">\"
send \"ls\r\"
send \"echo 'I\'m on $HOST'\r\"
expect -re \"stuff\"
send \"logout\"
")
echo -e "\n\n\n========"
echo VAR = "$VAR"
echo done
Quote votre variable pour préserver les nouvelles lignes: 'echo VAR = « $ VAR "' –