首页 > 解决方案 > Linux:检查用户是否有外壳

问题描述

我正在用 python 编写一个测试脚本,我使用 subprocess 来运行各种终端命令并检查结果。我要检查的一件事是用户“游戏”是否没有外壳。我不想以游戏身份登录(我认为无论如何这是不可能的),但能够以 root 身份运行此命令。是否有任何单个 bash 命令可以用来检查其他用户拥有(或没有)哪些 shell?

我可以使用命令“cat /etc/shells/”来检查我有哪些可用的 shell,我想用它来搜索另一个用户,但我不知道该怎么做,如果它甚至可能的话。

标签: linuxshell

解决方案


您可以使用“su”,并检查返回码:

root@shinwey:# su games
This account is currently not available.

root@pifa:/home/kalou/t# echo $?
1

或打印字符串“NO_SHELL”:

root@shinwey:# su games 2>&1 > /dev/null || echo NO_SHELL
NO_SHELL

推荐阅读