web-dev-qa-db-ja.com

Plinkはsuコマンドを使用してユーザーを切り替えていません

次のようにplink経由でサーバーに接続しています。

plink -ssh -l username -pw password example.Host.com -m C:\PuTTY\input.txt > C:\PuTTY\output.txt

input.txtには

whoami
su - newsuser
whoami

output.txtには

username
username

SUはplink経由で機能していません。

PuTTYで同じコマンドを試してみると、正常に機能し、 "newsuser"として出力を取得します。

Linux PuTTY-パスワード関連の問題についてsuを自動化します

上記の解決策を試しましたが、うまくいきませんでした。

ありがとう

1
Gopi Krishnan

まず、それはあなたが思うようには機能しません。

スクリプト内のコマンドは順番に実行されます。 su(成功した場合)は、対話型のシェルセッションを実行し、ユーザー入力(コマンド)を待ちます。 suが存在すると、2番目のwhoamiが実行されます(usernameを表示)。


とにかく、あなたのsuは実際には機能しません。

まず、suは確かにエラーメッセージを出力します。それは何ですか?コマンドでは、標準出力のみをキャプチャします。エラー出力もキャプチャします(2>&1)。 suにはインタラクティブな端末が必要な場合がありますが、-mスイッチは、デフォルトで非対話型端末を使用します。追加 -t switch この場合に役立ちます。


suを自動化することは一般的に悪い考えであることに注意してください。 root権限を必要とするいくつかのコマンドを実行する必要がある場合、より良い解決策は、専用の秘密鍵をsudoersファイル内のコマンドに関連付けることです。次に、PlinkでSudoと秘密鍵を使用します。

2
Martin Prikryl