【发布时间】:2020-02-10 16:02:17
【问题描述】:
使用以下代码运行 AWK 命令时
awk -F: 'BEGIN{OFS=":"} ($2 != "*" && $2 != "!") {$2=system("openssl passwd -1 -salt {salt} {password}"); print $2}' PASS/shadow.txt > PASS/test.txt | cat PASS/test.txt
打印命令时,我会收到:
“加盐密码”
0
它会将 $2 更改为 0。但仍会打印出哈希值。无论如何要解决这个问题并让 2 = 命令的输出。
我正在尝试将所有 $2 字段替换为新密码哈希作为我班级中的示例项目,并将结果存储在新文件中。
【问题讨论】:
-
system()返回命令的退出状态,而不是命令的输出。 -
欢迎来到 SO。命令
$2=system("openssl passwd -1 -salt {salt} {password}")不会按照您的想法工作,system命令将打开一个子shell,并且不会将该命令的输出保存到$2,而是会保存其退出状态(如果我在这里没有错的话),所以您需要让我们知道您的完整要求,以便我们更好地理解您的问题。