Adsense

quarta-feira, 14 de maio de 2014

Listando usuários em um grupo no Linux

Script para listar usuários em um grupo.

Os script está em inglês, mas manipula grupos dentro do linux ou HP-UX.

Lista usuários dentro de um grupo, sendo ele primário ou secundário.
Lista usuários que tem o grupo como primário somente ou como secundário, de acordo com a opção escolhida.
Exibe o ID do grupo (GID).
Lista todos os grupos da máquina em ordem crescente.

Na duvida use o comando lgroup com a opção --help: lgroup --help

Options to list group:
Use lgroup [option] [group] or lgroup [group] to list all users in primary and secundary group
-p : List only users in primary group
-s : List only users in secundary group
-v : List all users in verbose mode
-i : Show the group GID
-l : List all groups in /etc/group


O objetivo é facilitar a manipulação de grupos no Linux ou sistemas Unix HP-UX, não testado em todas as distribuições.




#! /bin/sh


if [ "$2" != "" ]; then

group=$2;

var=$1;

groupid=`cat /etc/group | grep "^$group:" | awk -F ":" '{ print $3}'`;


    if [ "$groupid" != "" ]; then

        case $var in

                "-p" )
                        cat /etc/passwd | awk -F ":" '{print $4":"$1}' | grep "$groupid:" | awk -F ":" '{print $2}';
                ;;

                "-s" )
                        cat /etc/group | grep  "^$group:" | awk -F ":" '{ print $4}' | tr "," "\n";
                ;;

                "-v" )

                        echo "primary:";
                        cat /etc/passwd | awk -F ":" '{print $4":"$1}' | grep "$groupid:" | awk -F ":" '{print $2}';
                        echo "";
                        echo "secundary:";
                        cat /etc/group | grep  "^$group:" | awk -F ":" '{ print $4}' | tr "," "\n";

                ;;

                "-i")
                        echo "$group:"
                        cat /etc/group | grep $group | awk -F ":" '{ print "gid ("$3")"}';

        esac

   else echo "Can't find group $group";

   fi

elif [ "$1" = "--help" ]; then

                echo -e "\n"
                echo "Options to list group:";
                echo "Use lgroup [option] [group] or lgroup [group] to list all users in primary and secundary group";
                echo "-p : List only users in primary group";
                echo "-s : List only users in secundary group";
                echo "-v : List all users in verbose mode";
                echo "-i : Show the group GID";
                echo "-l : List all groups in /etc/group";
                echo -e "\n\n"

elif [ "$1" = "-l" ]; then

        cat /etc/group | awk -F ":" '{ print $3":"$1}' | sort -n | awk -F ":" '{ print "group("$2") gid("$1")"}';

else

                group=$1;
                groupid=`cat /etc/group | grep "^$group:" | awk -F ":" '{ print $3}'`;

      if [ "$groupid" != "" ]; then

                cat /etc/group | grep  "^$group:" | awk -F ":" '{ print $4}' | tr "," "\n"

                cat /etc/passwd | awk -F ":" '{print $4":"$1}' | grep "$groupid:" | awk -F ":" '{print $2}'
      else echo -e "\nPlease enter option and group or put --help to get help\n";

      fi

fi