Como escapar senha no comando plink sudo?

0

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.

    
por user2718671 02.01.2018 / 15:33

0 respostas