Shell script para mostrar usuarios y grupos. (Solucionado)

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
ali_oli
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Vie Nov 19, 2010 10:53 am

Shell script para mostrar usuarios y grupos. (Solucionado)

Mensaje por ali_oli » Vie Nov 19, 2010 11:00 am

Hola chicos,

Mi jefe me ha pedido que haga 2 scripts los cuales muestren todos los usuarios que pertenecen al sistema con su grupo, ordenados. A continuacion os adjunto la informacion completa


Se debe mostrar la lista de usuarios con su nombre grupo al lado ordenado por usuario:

usuario:grupo

El segundo debe mostrar la lista de grupos con todos los usuarios de cada grupo en el siguiente formato:

grupo:usuario1,usuario2,..,usuarioN


el primero lo he hecho ultilizando users y groups

#!/bin/bash

echo "Aqui tienes al usuario con su grupo ordenados"

while read linea;do

groups $(cut -f1 -d: | sort );
done < /etc/passwd


Bien, mi problema es el siguiente:

Quiere que lo haga sin utilizar users ni groups. Únicamente manejando los ficheros /etc/passwd y /etc/groups.
:cry:
Última edición por akodo el Jue Nov 25, 2010 11:39 pm, editado 2 veces en total.
Razón: Título editado por ser incorrecto
Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: Ayuda con Shell Scripts. Urgente.

Mensaje por akodo » Vie Nov 19, 2010 12:32 pm

Para el primero, lo que tienes que hacer es leer el archivo /etc/passwd, ordenarlo y cortar los campos. Para que te hagas una idea, es algo como (a falta de ajustar opciones de los comandos):

Código: Seleccionar todo

cat /etc/passwd | sort | cut -f1,4 -d:
Si lo que necesitas es el nombre del grupo, entonces es más problemático.

Para el segundo se hace de una manera similar pero con el archivo /etc/groups.
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])
Avatar de Usuario
niky45
Forista Ancestral
Forista Ancestral
Mensajes: 9186
Registrado: Jue Abr 12, 2007 7:00 am
Ubicación: tras la pantalla (...)
Contactar:

Re: Ayuda con Shell Scripts. Urgente.

Mensaje por niky45 » Vie Nov 19, 2010 2:38 pm

akodo escribió:Para el primero, lo que tienes que hacer es leer el archivo /etc/passwd, ordenarlo y cortar los campos. Para que te hagas una idea, es algo como (a falta de ajustar opciones de los comandos):

Código: Seleccionar todo

cat /etc/passwd | sort | cut -f1,4 -d:
Si lo que necesitas es el nombre del grupo, entonces es más problemático.

Para el segundo se hace de una manera similar pero con el archivo /etc/groups.
y para filtrar los archivos, te recomiendo tirar de awk, y cambiar el IFS a ":", ya que es el caracter por el que estan separados los campos en ambos ficheros

(si... podria dartelo con mas detalle, pero yo creo que con eso tienes que ser capaz de encontrar lo que buscas.... no obstante, si no encuentras nada, dinos dond te has quedado y te busco algo mas concreto. :) )
#446716
>>"Linux: the operating system with a CLUE... Command Line User Environment".
(seen in a posting in comp.software.testing)

[ DNFD ] - [ F4A ] - [ dotfiles ]
ali_oli
Forista Nuevo
Forista Nuevo
Mensajes: 4
Registrado: Vie Nov 19, 2010 10:53 am

Re: Ayuda con Shell Scripts. Urgente.

Mensaje por ali_oli » Jue Nov 25, 2010 6:22 pm

Gracias por vuestra ayuda chavales. Ya encontre una solución aquí os la dejo por si a alguien le sirve:


#!/bin/bash

cat /etc/passwd | cut -d: -f 1 > usuario

for i in $(cat usuario);
do
usuario=$i;
gid=`grep "^$i:" /etc/passwd | cut -f 4 -d:`;
grupo=`grep ":"$gid":" /etc/group | cut -f 1 -d:`;
echo $usuario":"$grupo >> usugru;

done
sort -k 1 usugru
rm usugru
rm usuario
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje