/etc/security/passwdからユーザー名とパスワードのハッシュを取得する

/etc/security/passwdからユーザー名とパスワードのハッシュを取得する

新しいサーバーに同期する必要があるパスワードのユーザー名のリストがあります。

/etc/security/passwd ファイルからユーザー名とパスワードのハッシュを次の形式に抽出するにはどうすればよいですか?

username:MGURSj.F056Dj

passwd ファイルはセクション形式です。

username:
  password = MGURSj.F056Dj
  lastupdate = 623078865

答え1

次のコマンドを使用してファイルを解析できますawk

awk '
  /^[[:alnum:]]*:/ {
        user=substr($0, 1, index($0, ":") - 1)
        }
  /^ *password *=/ {
        split($0, elements, " *= *");
        print user ":" elements[2]
        }' \
  /etc/security/passwd

スクリプトの基本的なアイデアは、最初にユーザー名行(英数字で始まり、その後にコロンが続く)を見つけてから、「substr」関数を使用してそのユーザー名を抽出することです。ゼロ個以上のスペースで始まり、その後に文字列 " password"、ゼロ個以上のスペース、および等号が続く行では、行を等号に分割し、現在行の保存されているユーザー名とパスワードの部分を印刷します。

関連情報