
Cuando intento iniciar sesión con plink en un servidor, no sé cómo pasar correctamente la contraseña sudo en el comando.
Yo uso algo como esto:
plink -ssh -t <user>@<server> -pw <password> "echo -e <password>\n | sudo -S docker ... | cd <some path>"
La contraseña contiene 2 caracteres especiales: un ";" y un carácter "*". En primer lugar el ";" char debe tener como carácter de escape un "^" y se podrá establecer una conexión. Luego, en el comando necesito cambiar a sudo para usar un comando de la ventana acoplable. Normalmente debería coger el pase de la consola. Pero de alguna manera parece que se necesita una forma de escapar diferente. Probé algunas cosas y agregué comillas simples alrededor de la contraseña en segundo lugar, lo probé con y con el salto de línea detrás del pase, pero ninguna de las cosas que probé funcionó. ¿Alguien sabe cómo hacerlo funcionar?
Digamos que un ejemplo de contraseña es: abc123;*
Cuando uso este texto en el archivo bat:
SET password=abc123;*
plink -ssh -t <username>@<server> -pw abc123^;* "echo -e %password%\n | sudo -S docker exec -i <docker_container> <docker_container_path> |pwd"
Lo que esperaría es que después de este código el usuario estuviera en el contenedor de la ventana acoplable y se mostrara una ruta de Tomcat. Pero en su lugar se muestra el directorio actual después de la conexión y debajo están esas líneas:
[sudo] password for <user>: Sorry, try again
[sudo] password for <user>:
sudo: 1 incorrect password attempt
Probé diferentes enfoques para escapar de la contraseña del comando plink como:
SET password=abc123\;\*
o
SET password=abc123%%3B%%2A
oSET password=abc123^;*
pero ninguno de ellos funcionó.
Nota: Lamentablemente, cambiar la contraseña de usuario o configurar el servidor Linux en "sin contraseña" no es una opción.