Primeiro de tudo, não importa se você está fazendo isso localmente ou remotamente, já que você terá acesso ao shell durante a sessão aberta de qualquer maneira. Se você quiser apenas executar um único comando na máquina remota e desconectar, você pode especificá-lo entre aspas:
ssh user@machine 'echo "Who's your Daddy?"'
No entanto, você tem poucas opções para listar todos os usuários em um grupo específico:
Usando a ferramenta getent
:
getent group ftp
Forma antiga:
grep ^ftp /etc/group
Usando um script caseiro, que você pode adaptar às suas próprias necessidades:
#!/bin/bash
srchGroup="$1"
# get the corresponding line from /etc/group
for thisLine in "'grep "^${srchGroup}:" /etc/group'"
do
# get the parts of interest
grpNumber="'echo ${thisLine} | cut -d":" -f3'"
grpUsers="'echo ${thisLine} | cut -d":" -f4 | sed 's/,/ /g''"
done
# check /etc/passwd
pwdUsers="'awk -F":" '$4 ~ /'${grpNumber}'/ { printf("%s ",$1) }' /etc/passwd'"
echo "0 ${srchGroup}" # given at commandline
echo "1 ${grpNumber}" # from /etc/group
echo "2 ${grpUsers}" # from /etc/group
echo "3 ${pwdUsers}" # from /etc/passwd
echo "All users: ${grpUsers} ${pwdUsers}"
$ ./show.group.users ftp
0 ftp
1 500
2 user1 user2
3 homie1 homie2
All users: user1 user2 homie1 homie2
Este script foi extraído de aqui .