首页 > 解决方案 > Ubuntu按GID删除组

问题描述

我最近使用了ansible的动态库存能力来管理一些ec2s。在开发用于在我的动态清单上创建和验证组的脚本的过程中,我创建了大约 80 个组。由于脚本错误,这些组以安全组、ID、vpc、标签名称等命名。我想删除这些组。

我认识到使用 GID 是最好的删除方式。但是userdeldeluser命令都不提供指定 GID 的选项。这导致我繁琐地命名我的动态清单中的所有组以进行删除。

我能够sudo cat /etc/group并且有些人grep几乎可以获得名称列表,但我发现为无关组指定一系列 GID 更容易。

我正在寻找一些可以添加到剧本中的 shell 命令或 ansible 模块。提供的任何代码或脚本都非常有价值。

标签: linuxbashubuntuansible

解决方案


只需打印 gid,每个都转换为组名并调用groupdel每个组名:

 # print gid numbers separated by newlines
 printf "%s\n" 2000 2001 2002 $other_gid_number |
 # convert gid numbers to group names
 xargs -I{} awk -F: '$3 == {}' /etc/group | cut -d: -f1 |
 # to delete groups remove the echo
 xargs -n1 echo userdel

或单线:

printf "%s\n" 2000 2001 2002 $other_gid_number | xargs -I{} awk -F: '$3 == {}' /etc/group | cut -d: -f1 | xargs -n1 echo userdel

须藤猫/等/组

你不需要 sudo 来访问/etc/group. 它应该是每个人都可以阅读的。


推荐阅读