列出用户,如果用户不在系统中,则返回非零退出代码

列出用户,如果用户不在系统中,则返回非零退出代码

我需要找到一个用户,如果该用户不在系统中,该命令应以非零返回代码退出。我们可以在 中执行此操作bash,但我需要将其作为行命令,而不是bash脚本。那可能吗?

答案1

测试系统上是否存在用户的一个好方法是使用getent.该getent实用程序可以从各种“数据库”返回各种信息,例如,passwd“数据库”,group“数据库”,并且在某些系统上,您甚至可以要求getent列出可用的登录 shell。

要测试用户 是否testuser在系统中,请询问getentpasswd用户的条目:

getent passwd testuser

如果成功,您将获得一个passwd条目作为输出,并从 获得零退出状态getent。如果失败,您将不会得到任何输出和非零退出状态。我相信这就是您所要求的命令。

我们可以丢弃实用程序生成的任何输出并在语句中使用它if,如下所示:

theuser=testuser

if getent passwd "$theuser" >/dev/null
then
    printf 'The user "%s" exists\n' "$theuser"
else
    printf 'The user "%s" does not exist\n' "$theuser"
fi

当然,您可以/etc/passwd直接使用某些grep命令解析文件,但这很容易出错(与getent上面所示的使用相比),并且在使用某种形式的目录服务的系统上也无法正常工作。

相关内容