
當嘗試使用 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 容器中,並且將顯示 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 伺服器設定為「無密碼」不是選項。