Obtendo informações do sistema de forma portavel e facil com o getent

Cenário

Imagine que ter acesso a informações do sistema, como grupos, usuários,hostnames, etc…

Cada informação dessa pode ser obtida de forma diferente em sistemas diferentes, podendo se tornar um inferno para o programador, por exemplo, procurar os usuários em uma base de dados do sistema, e depois descobrir que os usuários estão em duas bases de dados diferentes.

Para esses e outros casos, quem programa em shell script tem uma boa alternativa chamada getent. Com o getent, você acessar entradas que estão no banco de dados administrativo do sistema sem depender de qual banco de dados o sistema esta usando.

Bom, e como usamos? Muito simples, o getent é usado da seguinte forma:

getent [Base de Dados] [chave]

Explicando:

Base de Dados: é a base de dados que você quer acessar :p. Se você esta procurando por algum usuário, use o “passwd“. Se você esta procurando pelo nome do host use “ahost“. Algumas das bases que o getent pode suportar são:

ahosts ahostsv4 ahostsv6 aliases ethers group hosts netgroup networks passwd protocols rpc services shadow

chave: Algo do bando de dados. Isso, como vocês podem perceber, varia de banco de dados a banco de dados. Por exemplo, a chave usada no banco de dados do passwd é um usuário. Um usuário também é usado no “shadow“, que fornece as senhas criptografadas do sistema. Mas, no “ahost” que mostra os nomes de cada ip, seria um ip a chave do banco de dados.

A chave filtra o banco de dados, deixando somente o que você precisa para trabalhar. Se você omite a chave, todo o banco de dados é mostrado. Tenha muito cuidado para saber onde você precisa de todo o banco de dados ou apenas uma entrada, para não ficar dando greps a toa no programa.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: