
Estou tentando montar um único comando que exibirá o shell padrão de cada usuário. Ao pesquisar, consigo encontrar principalmente comandos para alterar o shell padrão, como chsh -s /bin/ksh
mas não para executar a tarefa em questão.
Alguém sabe como alguém pode conseguir isso no CentOS?
Responder1
Outra maneira de fazer isso
getent passwd | cut -d: -f1,7
Responder2
Você pode analisar o /etc/passwd
arquivo, que contém o nome de usuário e a listagem do shell de login, juntamente com outras informações relevantes sobre todas as contas de usuário do sistema.
O nome de usuário é armazenado :
separadamente primeiro e o shell de login no sétimo (último) campo.
Então você pode usar awk
para imprimir os campos com um pouco de formatação entre eles para ficar mais bonito:
awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
Se acontecer de você usar serviços como ldap
esse que não usam sistema de arquivos local, você pode usar getent passwd
o seguinte nsswitch
para obter as informações e, em seguida, usar awk
sobre isso:
getent passwd | awk -F':' '{ print $1 " " FS " " $NF }'
Exemplo:
% awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
root : /bin/bash
daemon : /usr/sbin/nologin
bin : /usr/sbin/nologin
sys : /usr/sbin/nologin
sync : /bin/sync
games : /usr/sbin/nologin
man : /usr/sbin/nologin
lp : /usr/sbin/nologin
mail : /usr/sbin/nologin
Responder3
Essas informações são armazenadas em /etc/passwd:
cut -d: -f1,7 /etc/passwd