Ao tentar fazer login com plink em um servidor, não sei como passar a senha do sudo no comando corretamente.
Eu uso algo assim:
plink -ssh -t <user>@<server> -pw <password> "echo -e <password>\n | sudo -S docker ... | cd <some path>"
A senha contém 2 caracteres especiais - um ";" e um caractere "*". Em primeiro lugar, o ";" char precisa ser escapado com um "^" e uma conexão pode ser estabelecida. Em seguida, no comando, preciso alternar para o sudo para usar um comando do docker. Normalmente, deve levar o passe do console. Mas de alguma forma parece que há um escape diferente é necessário. Eu tentei algumas coisas e adicionei aspas simples em torno da senha em segundo lugar, tentei com e com o linebreak atrás do passe, mas nenhuma das coisas que eu tentei funcionou. Alguém sabe como fazer isso funcionar?
Digamos que um exemplo de senha seja: abc123; *
Quando eu uso este texto no arquivo 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"
O que eu esperaria é que, após esse código, o usuário estaria no contêiner docker e um caminho de tomcat seria exibido. Mas, em vez disso, o diretório atual depois que a conexão é exibida e abaixo estão aquelas linhas:
[sudo] password for <user>: Sorry, try again
[sudo] password for <user>:
sudo: 1 incorrect password attempt
Eu tentei abordagens diferentes para escapar da senha do comando plink como:
SET password=abc123\;\*
ou
SET password=abc123%%3B%%2A
ou SET password=abc123^;*
mas nenhum deles funcionou.
Nota: Infelizmente, alterar a senha do usuário ou configurar o servidor linux como "sem senha" não é uma opção.