新しいサーバーに同期する必要があるパスワードのユーザー名のリストがあります。
/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
"、ゼロ個以上のスペース、および等号が続く行では、行を等号に分割し、現在行の保存されているユーザー名とパスワードの部分を印刷します。