IBM AIX 操作系统中的 if else 命令

问题描述 投票:0回答:3

如果

/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
,而在其他情况下没有输出。 我如何修改命令以获得请求的命令。

awk grep passwords aix
3个回答
1
投票

使用您展示的示例和尝试,请尝试遵循 GNU

awk
代码。

awk -v RS='root:\\n[[:space:]]*password = \\*+\\n' 'RT{print "OK"}' Input_file

0
投票

@medisamm
:现在呢:

echo 'root:
            password = *
   or
      root:
            password = {ssha512}***********' | 

 mawk '/password = / * NF^_ ? ($!NF = $NF)^--_ : (_+= /^root: /)-_'

*
{ssha512}***********

0
投票

我正在尝试,这个命令给出了我正在寻找的东西:

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 = *
© www.soinside.com 2019 - 2024. All rights reserved.