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