如果
/etc/security/passwd
被分配给password
用户,我会检查root
文件。
我们必须对结果进行分类:
root:
password = *
or
root:
password = {ssha512}***********
我写了一个命令返回
ok
如果分配的密码是hashed
一个和确切的输出
如果没有分配密码
root:
password = *
这是我的命令
grep -p 'password = ' /etc/security/passwd | grep -p '^root:' | awk -F= '{gsub(/ /, "", $2); print $2}' | awk -F: '{if ($1 != "" && $2 != "*") print "ok"; else print $2}'
问题是该命令在散列密码时仅返回OK
,而在其他情况下没有输出。
我如何修改命令以获得请求的命令。
使用您展示的示例和尝试,请尝试遵循 GNU
awk
代码。
awk -v RS='root:\\n[[:space:]]*password = \\*+\\n' 'RT{print "OK"}' Input_file
@medisamm
:现在呢:
echo 'root:
password = *
or
root:
password = {ssha512}***********' |
mawk '/password = / * NF^_ ? ($!NF = $NF)^--_ : (_+= /^root: /)-_'
*
{ssha512}***********
我正在尝试,这个命令给出了我正在寻找的东西:
grep -p 'password = ' /test/test1 | grep -p '^root:' | awk -F'= ' '{ if ($2 == "*") print; else if ($2 ~ /{ssha[[:alnum:]]+}/) print "ok" }'
grep -p 'password = ' /test/test2 | grep -p '^root:' | awk -F'= ' '{ if ($2 == "*") print; else if ($2 ~ /{ssha[[:alnum:]]+}/) print "ok" }'
oK
grep -p 'password = ' /test/test1 | grep -p '^root:' | awk -F'= ' '{ if ($2 == "*") print; else if ($2 ~ /{ssha[[:alnum:]]+}/) print "ok" }'
password = *