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 コマンドを使用する必要があります。通常は、コンソールからパスを取得します。しかし、どうやら別のエスケープが必要なようです。いくつか試してみましたが、2 番目にパスワードを一重引用符で囲んだり、パスの後ろに改行を付けたりしてみましたが、どれもうまくいきませんでした。これをうまく機能させる方法を誰か知っていますか?

パスワードの例は、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 サーバーを「パスワードなし」に設定したりすることはできません。

関連情報