2

シェフを使用してサーバーのプロビジョニング プロセスを自動化しようとしています。シェフをルートとして実行したくないので、chef/deployer ユーザーが必要です。しかし、このユーザーを手動で作成したくありません。代わりに、このステップを自動化したいと考えています。だから私はそれをスクリプト化しようとしましたが、問題に遭遇しました:

問題は、私が実行すると

>ssh root@123.345.345.567 '/bin/bash -e' < ./add_user.sh

add_user が含まれる場所

//..if the username doesnt exist already
adduser $USERNAME --gecos ''

コマンドの出力またはプロンプトが表示されません。

  1. この方法でインタラクティブなコマンドを実行する方法はありますか?
  2. 自動化された方法でユーザーを追加するより良い方法はありますか?
4

2 に答える 2

2

これを試して:

ssh -t root@<ipaddress> adduser $USERNAME --gecos

$元の例で IP アドレスに が含まれている理由がわかりません。ssh接続に失敗する可能性がありますが、そのような失敗を示していないため、それは単なるタイプミスだと思います。

add_user.shは単純なコマンドにすぎないため、明示的に実行したりリダイレクトしたりする複雑さを追加する必要はなく、をbash介してadduserコマンドを実行するだけsshです。

最後に$USERNAME、リモート エンドではなくローカル エンドで定義されている可能性が高いため、元のコマンドで「言ったことを実行する」ことができたとしても、リモート エンドで実行adduser --gecosされることになりますが、そうではありません。あなたが意図したもの。

于 2012-11-02T21:37:07.067 に答える
0

使ってみてください:

ssh -t root@$123.345.345.567 '/bin/bash -e' < ./add_user.sh

代わりは。

于 2012-11-02T20:58:30.780 に答える