Solaris bash 脚本 / 搜索并将字段附加到 /etc/group 中的行尾

Solaris bash 脚本 / 搜索并将字段附加到 /etc/group 中的行尾

我需要一个 bash 脚本来修改 /etc/group,以便将 NIS 用户附加到 Solaris 10u8 系统上的特定本地组并删除这些用户。最好有一个或两个以 uid 和 groupname 为变量的函数。

在文件 /etc/group 中将用户 myuser 添加到 groupbbb 之前输入文件

...
groupaaa::98000:
groupbbb::98001:hisuser   
groupccc::98003:
...

输出文件

...
groupaaa::98000:
groupbbb::98001:hisuser,myuser
groupccc::98003:

...该函数应该检查用户是否已经属于本地组并退出

我应该使用 sed 还是 nawk 还是其他什么。有没有人有好的单行代码 :-)

在 Linux 中有 gpasswd,但我在 Solaris 中没有找到相应的命令。用户不是系统上的本地用户,而是 NIS 用户,所以我认为 usermod 不起作用!

感谢任何指点!

/斯梅迪斯

答案1

调用此函数:

gradd () { local group=$1 user=$2; sed "/^${group}:/{/\<${user}\>/! s/$/,${user}/}' /etc/group; }

像这样:

gradd groupbbb myuser > /tmp/newgroups && mv /tmp/newgroups /etc/group

文件重定向和重命名可以移到函数内部:

gradd () { local group=$1 user=$2; sed "/^${group}:/{/\<${user}\>/! s/$/,${user}/}' /etc/group  > /tmp/newgroups && mv /tmp/newgroups /etc/group; }

那么调用将会是:

gradd groupbbb myuser

相关内容