Text-Formatting

從 /etc/security/passwd 獲取使用者名和密碼雜湊

  • May 5, 2020

我有一個使用者名列表,我需要將其密碼同步到新伺服器。

我將如何從 /etc/security/passwd 文件中提取使用者名和密碼雜湊為以下格式

username:MGURSj.F056Dj

passwd 文件是節格式

username:
 password = MGURSj.F056Dj
 lastupdate = 623078865

您可以使用以下方式解析文件awk

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

腳本背後的想法是首先找到使用者名行 - 一個以字母數字字元開頭並包含字母數字字元,後跟冒號 - 並使用“substr”函式提取該使用者名。在以零個或多個空格開頭,後跟字元串“ password”,後跟零個或多個空格和等號的行上,我們將行拆分為等號並列印保存的使用者名和目前行的密碼部分.

引用自:https://unix.stackexchange.com/questions/584622