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

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

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

Пароль содержит 2 специальных символа - ";" и символ "*" На первом месте ";" char должен быть экранирован с помощью «^», и соединение может быть установлено. Затем в команде мне нужно переключиться на 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, и будет отображен путь к коту. Но вместо этого отображается текущий каталог после подключения, а внизу есть такие строки:

[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 "no password" не вариант.

0