Como resolver um nome de grupo para gid tanto no OSX quanto no Linux?

0

Existe um pequeno pedaço de código para transformar um nome de grupo simbólico (por exemplo, staff ) em seu ID de grupo numérico (por exemplo, 82 )?

O código deve funcionar da mesma forma no OS X e no GNU / Linux.

    
por ulidtko 10.01.2018 / 15:40

1 resposta

0

Este one-liner (um pouco longo demais) usa python grp module:

python -c 'import grp,sys; gname=sys.stdin.readline().strip(); [gid]=[g.gr_gid for g in grp.getgrall() if g.gr_name==gname][:1]; print(gid)' <<< $GROUPNAME

Existem algumas coisas aqui.

Primeiro, é escrito para funcionar em python2 e python3 .

Segundo: ele não usa grp.getgrnam() , mas busca todos os grupos e faz sua própria filtragem. Por quê? Porque getgrnam() não funcionou em pelo menos um Mac que testei.

Terceiro: trunca vários resultados . Por quê? Porque grp.getgrall() retornou duplicatas em pelo menos um Gentoo que testei.

Finalmente: sim, haverá uma exceção para o grupo inexistente. Ajuste suas próprias necessidades.

N.B. Esta pergunta SO oferece alguns bits, mas ele foi fechado, não aceita novas respostas e não pode ser migrado. Então aqui você tem uma auto-resposta.

    
por 10.01.2018 / 15:50

Tags