Как экранировать пароль в команде plink sudo?

Как экранировать пароль в команде plink sudo?

При попытке входа на сервер с помощью plink я не знаю, как правильно передать пароль sudo в команде.

Я использую что-то вроде этого:

plink -ssh -t <user>@<server> -pw <password> "echo -e <password>\n | sudo -S docker ... | cd <some path>"

Пароль содержит 2 специальных символа - ";" и "*". Во-первых, символ ";" нужно экранировать с помощью "^", и соединение может быть установлено. Затем в команде мне нужно переключиться на sudo, чтобы использовать команду docker. Обычно он должен брать пароль из консоли. Но почему-то кажется, что там нужно другое экранирование. Я пробовал некоторые вещи и добавлял одинарные кавычки вокруг пароля во втором месте, пробовал и с переносом строки после пароля, но ничего из того, что я пробовал, не сработало. Кто-нибудь знает, как это сделать?

Допустим, пример пароля: abc123;*

Когда я использую этот текст в 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"

Я ожидал, что после этого кода пользователь окажется в контейнере docker и будет отображен путь tomcat. Но вместо этого отображается текущий каталог после подключения, а ниже есть эти строки:

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

Я пробовал разные подходы, чтобы экранировать пароль для команды plink, например: SET password=abc123\;\*или SET password=abc123%%3B%%2AилиSET password=abc123^;*

но ни один из них не сработал.

Примечание: К сожалению, изменить пароль пользователя или настроить сервер Linux на «без пароля» невозможно.

Связанный контент