我正在编写一个脚本,以在多个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/