Linux/Unix Shell Scripting - Script que muestre el espacio utilizado por los usuarios

 
Vista:

Script que muestre el espacio utilizado por los usuarios

Publicado por Seper (4 intervenciones) el 23/11/2013 16:16:06
Hola a todos

Soy nuevo aca y tambien nuevo en lo que son scripts de linux.

Me gustaria pedirles ayuda para realizar el script que requiero, si son tan amables.

Necesito crear un script en bash que liste los usuarios normales y el uso en disco que tiene cada uno.

Por el momento solo tengo pedazos que necesito juntar para lograr el script.

Debo listar al root (UID 0) y a los usuarios normales (UID 500 - N), excluyendo los usuarios de sistema (UID 1- 499)

Debo mostrar el espacio en disco que utlizan, ojala en notacion "humana" como se le dice, para lo que tengo entendido que sirve el comando du -h

Tengo entendido que el listado de usuarios se encuentra en /etc/passwd

Para que el listado no me salga con el campo de la contraseña utilizo este comando cut -d: -f 1,3 /etc/passwd

Tambien se que debo colocar #!/bin/bash al comienzo del archivo del script

Como ven mis conocimientos son escasos

Alguien podria ayudarme a realizar el script? Seria ideal si alguien lo hace y me explica de forma simple los comandos utilizados.

Espero no sea mucho pedir. Saludos y Gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 104
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Script que muestre el espacio utilizado por los usuarios

Publicado por xve (309 intervenciones) el 24/11/2013 20:30:31
Hola Seper, creo que lo puedes hacer es dos simples consultas...

1.- Usuarios con ID superior o igual a 500:
1
cut -d: -f 1,3 /etc/passwd | nawk -F: '{if($2>=500) print $1}'

2.- Para el espacio en disco que utiliza cada usuarios seria:
1
du -sh /home/*

Si lo que quieres es ponerlo en un script, podría ser algo así
1
2
3
#!/bin/bash
cut -d: -f 1,3 /etc/passwd | nawk -F: '{if($2>=500) print $1}'
du -sh /home/*

Cualquier cosa...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Script que muestre el espacio utilizado por los usuarios

Publicado por Seper (4 intervenciones) el 25/11/2013 17:41:48
Gracias por la respuesta.

Lo que señalas funciona bien, aunque me faltaria listar el usuario root, creo que se utiliza el simbolo ~ para root?. Ademas tengo una duda, el espacio en disco que utiliza un usuario se determina solo con lo que contiene su /home/? Tengo entendido que existen mas archivos aparte del home, que estan ligados a cada usuario.

De todas maneras me sirvió lo que me dijiste. Lo que busco de salida de este script es algo asi:

Usuario Espacio
root 3gb
user2 2,5gb
user1 500mb
user3 5mb
userN Xmb

Especificamente requiero que se listen todos los usuarios incluido el root, con el peso total de los archivos que utiliza el usuario incluyendo el home y otros archivos asociados, y la salida debe estar ordenada por peso de mayor a menor como escribi en el ejemplo.

Se que suena extraño lo que pido pero estoy siguiendo un curso de scripting que comenze hace poco y esto es una actividad optativa del curso que me gustaria realizar para poder analizar el codigo e ir subiendo el nivel.

Saludos y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 104
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Script que muestre el espacio utilizado por los usuarios

Publicado por xve (309 intervenciones) el 25/11/2013 19:25:02
Ok, te entiendo... haber si te sirve este código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
 
cut -d: -f 1,6 /etc/passwd | grep ^'root:'> listadoUsuarios
cut -d: -f 1,3,6 /etc/passwd | awk -F: '{if($2>=500) print $1":"$3}' >> listadoUsuarios
 
cat listadoUsuarios | while read usuario;do
    username=`echo $usuario | cut -d: -f1`
    path=`echo $usuario | cut -d: -f2`
    if [ -d "$path" ];then
        discUsage=`du -sh $path | awk '{print $1}'`
    else
        discUsage="No existe directorio"
    fi
    echo $username' - '$path' - '$discUsage
done

Este código, te muestra el listado de usuario con id superior o igual a 500 incluido el root. Con su carpeta, y su tamaño si existe dicha carpeta.

Espero que te sirva... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Script que muestre el espacio utilizado por los usuarios

Publicado por Seper (4 intervenciones) el 26/11/2013 00:46:28
Gracias nuevamente por tu respuesta, ayuda y paciencia

Como tipico alumno aprendiendo copie y pegue el script que escribiste en un archivo y luego de darle permisos de ejecucion, y ejecutarlo, me dice: syntax error near unexpected token 'done'

Perdon por molestar pero como estoy aprendiendo no se como corregirlo, pero me ha servido un mundo lo que has escrito

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 104
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Script que muestre el espacio utilizado por los usuarios

Publicado por xve (309 intervenciones) el 26/11/2013 08:36:42
Hola Seper, no entiendo muy bien que te pasa, pero a mi me funciona perfectamente... te adjunto imagen...



Te muestra el listado de los usuarios?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Script que muestre el espacio utilizado por los usuarios

Publicado por Seper (4 intervenciones) el 27/11/2013 03:00:42
Si, ahi me resulto. Al parecer tenia un problema con la maquina virtual.

Analice el codigo y logre mi cometido.

Muchas gracias por la ayuda.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar