Como escapar da senha no comando plink sudo?

Como escapar da senha no comando plink sudo?

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. Então, no comando, preciso mudar para sudo para usar um comando docker. Normalmente deve ser obtido o passe do console. Mas de alguma forma parece que é necessária uma fuga diferente. Eu tentei algumas coisas e adicionei aspas simples ao redor da senha em segundo lugar, tentei com e com a quebra de linha atrás da passagem, mas nenhuma das coisas que tentei funcionou. Alguém sabe como fazer isso funcionar?

Digamos que um exemplo de senha seja: abc123;*

Quando 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 estivesse no contêiner docker e um caminho do Tomcat fosse exibido. Mas em vez disso, o diretório atual após a conexão é exibido e abaixo estão essas linhas:

[sudo] password for <user>: Sorry, try again
[sudo] password for <user>:
sudo: 1 incorrect password attempt

Eu tentei diferentes abordagens para escapar da senha do comando plink, como: SET password=abc123\;\*ou SET password=abc123%%3B%%2AouSET password=abc123^;*

mas nenhum deles funcionou.

Nota: Infelizmente, alterar a senha do usuário ou configurar o servidor Linux para “sem senha” não é uma opção.

informação relacionada