あるファイルの行をコピーし、別のファイルの行を置き換える方法は?

あるファイルの行をコピーし、別のファイルの行を置き換える方法は?

スクリプトのあるコンピュータからシャドウファイルエントリをインポートし、別のコンピュータでそのユーザエントリを見つけてその行を置き換えようとします(複数のコンピュータでパスワードを更新するため)。

これはユーザー生成スクリプトの一部であるため、最初に各コンピューターでユーザーが作成され、次にパスワードがサーバーに追加され、別のワークステーションにコピーされます。

答え1

この問題を処理するより簡単な方法がたくさんあるという上記の意見に同意しながら、実際の問題に関するいくつかのヒントは次のとおりです。

$MY_USER="anything"
HASH=$(ssh <source_server> "cat /etc/shadow | grep ^$MY_USER:" | awk -F: '{print $2}')
ssh <target_server> "echo '$MY_USER:$HASH' | chpasswd -e"

特定のユーザーの変数を置き換え、MY_USERスクリプトの最後の行を使用してサーバーを繰り返します。

その他のコメント:

  1. すべてのサーバーが同じパスワードエンコーディングを使用していることを確認する必要があります。
  2. これは、ルートパスワードへのアクセス権がなく、nopasswd sudoルールセットがない場合にsudo -S便利です。
  3. パスワードを変更する前に、パスワードにアクセスする他の方法があることを確認してください。

関連情報