这是一个我想要我的代码做的总结:
if (group exists) then (add user to group) else (create group) (add user to group) fi
字符串我正在使用Ubuntu虚拟机,但我在类似网站上找到的所有结果都不起作用。
pokxtpni1#
rups的解决方案中的grep语句有一些缺陷:例如,当存在一个组lpadmin时,组admin的grepping可能返回true(“组存在”)。修复grep-query
grep
lpadmin
admin
grepping
true
grep -q -E "^admin:" /etc/group
字符串或使用
if [ $(getent group admin) ]; then echo "group exists." else echo "group does not exist." fi
型
rwqw0loc2#
Grepping /etc/group可以工作,但仅在/etc/nsswitch.conf具有以下内容的计算机上:
group: files
字符串这意味着在确定可用组时只参考/etc/group。使用以下两种方式之一(按名称或按gid):
getent group <groupname> getent group <groupid>
型对于更通用的解决方案,检查退出状态:0表示“存在”,非零表示“不存在”。例如,要检查组“postgres”是否存在,如果不存在则创建它(假设bash shell,以能够创建新组的用户身份运行),请运行:
/usr/bin/getent group postgres 2>&1 > /dev/null || /usr/sbin/groupadd postgres
hfsqlsce3#
此脚本可以帮助您:
read -p "enter group name: " group if grep -q $group /etc/group then echo "group exists" else echo "group does not exist" fi
字符串
r55awzrz4#
我发现它更有用,将andiba的解决方案组合成一个适当的函数:
function grpexists { if [ $(getent group $1) ]; then echo "group $1 exists." else echo "group $1 does not exist." fi }
字符串例如,可以通过在/etc/bash.bashrc*中包含此函数来调用到您的环境中,这样您就可以使用以下拼写检查组的存在:
/etc/bash.bashrc*
grpexists group_name
型然后返回以下之一:组group_name存在。或组group_name不存在。
g2ieeal75#
单行:
$getent组<-groupname->||groupadd<-groupname->
798qvoo86#
这里有3个应该工作的命令:
group=sudo grep -qw ^$group /etc/group || groupadd $group usermod -aG $group $USER
字符串或者,当您使用-f/--force时(如果组已经存在,则成功退出):
-f
--force
groupadd -f mygroup && usermod -aG mygroup $USER
6rqinv9w7#
$ groupadd --help Usage: groupadd [options] GROUP Options: -f, --force exit successfully if the group already exists, and cancel -g if the GID is already used
字符串所以你可以简单地做:
groupadd -f some_new_grp
rpppsulh8#
极客伟大的解决方案和指导,感谢分享这里是我的2美分,使我们的生活更简单或更懒惰:-)我可以用来补充useradd脚本,我必须添加几个用户一次.我想知道它会如何看起来像一个在循环中的几个组:group 1,group 2,group 3. group 6然后useradd到系统这样的东西?第一个月
34gzjxbg9#
如果要确保将现有的USER添加到GROUP,则此流
字符串可以简化为:
if (group exists) then # do nothing else (create group) fi (add user to group)
型可以删除then ... # do nothing,并将条件更改为if NOT exists,以进一步简化流程
then ... # do nothing
if NOT exists
if (group NOT exists) then (create group) fi (add user to group)
型如果您可能尝试创建一个组,并且如果它已经存在,则没有必要检查if (group NOT exists)。因此,整个流程可以简化为:
if (group NOT exists)
(create group) AND (add user to group)
型how to do that in code
9条答案
按热度按时间pokxtpni1#
rups的解决方案中的
grep
语句有一些缺陷:例如,当存在一个组
lpadmin
时,组admin
的grepping
可能返回true
(“组存在”)。修复
grep
-query字符串
或使用
型
rwqw0loc2#
Grepping /etc/group可以工作,但仅在/etc/nsswitch.conf具有以下内容的计算机上:
字符串
这意味着在确定可用组时只参考/etc/group。使用以下两种方式之一(按名称或按gid):
型
对于更通用的解决方案,检查退出状态:0表示“存在”,非零表示“不存在”。例如,要检查组“postgres”是否存在,如果不存在则创建它(假设bash shell,以能够创建新组的用户身份运行),请运行:
型
hfsqlsce3#
此脚本可以帮助您:
字符串
r55awzrz4#
我发现它更有用,将andiba的解决方案组合成一个适当的函数:
字符串
例如,可以通过在
/etc/bash.bashrc*
中包含此函数来调用到您的环境中,这样您就可以使用以下拼写检查组的存在:型
然后返回以下之一:
组group_name存在。
或
组group_name不存在。
g2ieeal75#
单行:
$getent组<-groupname->||groupadd<-groupname->
798qvoo86#
这里有3个应该工作的命令:
字符串
或者,当您使用
-f
/--force
时(如果组已经存在,则成功退出):型
6rqinv9w7#
字符串
所以你可以简单地做:
型
rpppsulh8#
极客伟大的解决方案和指导,感谢分享这里是我的2美分,使我们的生活更简单或更懒惰:-)我可以用来补充useradd脚本,我必须添加几个用户一次.我想知道它会如何看起来像一个在循环中的几个组:group 1,group 2,group 3. group 6然后useradd到系统这样的东西?
第一个月
34gzjxbg9#
如果要确保将现有的USER添加到GROUP,则此流
字符串
可以简化为:
型
可以删除
then ... # do nothing
,并将条件更改为if NOT exists
,以进一步简化流程型
如果您可能尝试创建一个组,并且如果它已经存在,则没有必要检查
if (group NOT exists)
。因此,整个流程可以简化为:型
how to do that in code