Solaris bash script / pesquisa e anexar campo ao final da linha em / etc / group

0

Eu preciso de um script bash que modifique o / etc / group para anexar e excluir usuários do NIS para grupos locais específicos em um sistema Solaris 10u8. Uma ou duas funções preferíveis com uid e groupname como variáveis.

inputfile antes de adicionar um usuário myuser ao groupbbb no arquivo / etc / group

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

outputfile

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

A função deve verificar se o usuário é parte do grupo local e sair

Devo usar sed ou nawk ou outra coisa. Alguém tem um bom oneliner: -)

No linux há o gpasswd, mas eu não encontrei um comando correspondente no Solaris. O usuário não é local no sistema, mas os usuários do NIS, portanto, o usermod não funciona, eu acho!

Grande para todos os ponteiros!

/ Smedis

    
por user40797 23.06.2010 / 12:16

1 resposta

0

Chame esta função:

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

assim:

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

O redirecionamento e a renomeação de arquivos podem ser movidos dentro da função:

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

então a ligação seria:

gradd groupbbb myuser
    
por 23.06.2010 / 12:39