我正在编写一个脚本,以在多个linux服务器上添加用户。但是首先我要检查提到的用户名是否已经在该特定服务器上存在。

EXISTS=`ssh xyz 'egrep "$username" /etc/passwd | cut -d':' -f1'`

这是我正在尝试的命令。但是它没有给我想要的输出..而是给了我passwd文件中的所有用户名。
变量EXISTS应该只有该用户名,否则应该为空。

最佳答案

在任何现代Linux系统上,您都有getent。因此,不要像这样检查,而是检查以下代码的返回码(通过$?):

getent passwd $username &>/dev/null

(如果存在,则以0退出,如果不存在则以2退出;手册页中描述的其他错误代码)

(注意:这不是一个Java问题,不是吗?)

编辑好,完整代码...
ssh thehost getent passwd $username;
RC=$?;
# check for $RC here; if 0, the user exists; if not 0 it doesn't.
# Man getent for more details

注意,另一种解决方案是尝试直接添加用户。如果用户已经存在或其他原因,该命令将失败;再次在这里,man useradd,并检查可能的返回码。

关于linux - 存在=`ssh xyz ' egrep “$username”/etc/passwd | cut -d':' -f1'`命令无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27314074/

10-14 08:11