linux - Ubuntu 通过 GID 删除组

标签 linux bash ubuntu ansible

<分区>

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

我知道使用 GID 是最好的删除方法。但是 userdeldeluser 命令都没有提供指定 GID 的选项。这导致我乏味地命名我的动态 list 中的所有组以供删除。

我能够 sudo cat/etc/group 并且使用一些 grep 几乎可以获得名称列表,但我发现仅指定一个范围更容易无关组的 GID。

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

最佳答案

只需打印 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 cat /etc/group

您不需要 sudo 来访问 /etc/group。每个人都应该可以阅读。

关于linux - Ubuntu 通过 GID 删除组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57875183/

相关文章:

linux - 如何使用 su - 保留一些变量?

linux - 删除 Linux 中除最新文件之外的所有 .csv 文件

python - 如何在 Linux 中安装 Z3 for Python3

c++ - 在 C++ 中使用 sprintf() 和 sscanf() 时出现意外行为?

bash - 使用 awk 进行无放回采样

arrays - 在 Bash 中循环遍历多个数组时关联数组键中的空格

bash - 如何实时从远程 git 仓库获取推送通知?

ubuntu - 几乎每个命令都是 "-bash:/usr/bin/: No such file or directory"

linux - 尝试在 Ubuntu 18、Linux 上安装 QT 包时出现 QXcbConnection 错误

node.js - su 命令无法识别 Node 服务 - ubuntu