Que tal
</etc/passwd grep bin/bash | cut -d: -f1 | xargs -n1 id
Estou tentando conseguir o seguinte:
Liste meus usuários de Linux, que definiram bin / bash em / etc / passwd E anexe as informações de cada usuário de id [username]
na instrução print, algo nas linhas de:
cat /etc/passwd | grep bin/bash | awk -F\: '{print $1";"$(id $1)}'
(o que obviamente não funciona;))
Tenho a sensação de que estou bem perto; o que estou perdendo?
A saída deve ser (veja o comentário de DavDav):
User1;uid=1000(User1) gid=1000(User1) groups=1000(User1)
User2;uid=1001(User2) gid=1001(User2) groups=1001(User2)
User3;uid=1002(User3) gid=1002(User3) groups=1002(User3)
Que tal
</etc/passwd grep bin/bash | cut -d: -f1 | xargs -n1 id
Tente isso,
awk -F ':' '/bin\/bash/ {printf ($1";"); system("id "$1)}' /etc/passwd
system
executará o comando e retornará o valor para awk
Aqui está outra opção:
for i in $(grep /bin/bash /etc/passwd | awk -F: '{ print $1 }'); do
echo "${i};$(id ${i})"
done
O grep ... awk ...
gerará a lista de nomes de usuários correspondentes às linhas em /etc/passwd
que contêm /bin/bash
. Em cada iteração do loop for
, i
será um desses nomes de usuário. O echo
, em seguida, imprime o nome de usuário seguido por um ponto e vírgula, seguido pela saída de id
para esse nome de usuário.
Tags grep text-processing awk scripting