从 /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”,后跟零个或多个空格和等号的行中,我们将行分成等号,并打印保存的用户名和当前行的密码部分。

相关内容