| Subcribe via RSS

Bash: listar los usuarios de un ordenador

Abril 24th, 2009 Posted in Bash, linux, programacion, ubuntu

Dado que últimamente estoy haciendo bastantes cosillas con bash voy a poner una serie de “truquillos” aquí.

NOTA: El ejemplo que propongo aquí es un copia/pega de un script que creé para un servidor y una finalidad muy concretas.

En cierto servidor necesitaba tener un listado de los usuarios. Una posibilidad puede ser ir al directorio home y ver allí los usuarios (cada usuario tendrá un directorio ‘home’).

for directorio in /home/*; do
	echo ./actualizador_cada.sh $directorio.
done

dará como resultado:

/home/gorka
/home/alumno
/home/lost+found
/home/mysql
...

Si queremos que no nos muestre ‘/home’ podemos eliminar esa parte de cada directorio usando una subcadena:

echo ${directorio:6}

(esto mostrará una subcadena de $directorio desde la posición 6 hasta el final)

for directorio in /home/*; do
	echo ${directorio:6}
done

dará como resultado:

gorka
alumno
lost+found
mysql
...

NOTA: esto funciona en un sistema en el que los usuarios tengan directorios ‘home’ iguales a su nombres de usuario.

Seguramente verás que hay algunos usuarios que no te interesan (en mi caso sólo me interesaban los usuarios “reales”) así que añadí unas líneas para eliminar los que no interesaban (mysql, lost+found, etc…):

usuarios_no_validos=( 'mysql' 'lost+found')
for directorio in /home/*; do
	valido=1
	usuario=${directorio:6}
	for usuario_no_valido in ${usuarios_no_validos[@]}; do
		if [ $usuario_no_valido = $usuario ]; then
			valido=0
		fi
	done
	if [ $valido -eq 1 ]; then
		echo $usuario
	fi
done


Entradas relacionadas

  1. Introducción a bash: Pasar argumentos a un script bash
  2. Introducción a Bash: control de flujo en nuestro script (if/else)
  3. Copias de seguridad MySQL automáticas con BASH y CRON
  4. Introducción a bash: crear un sencillo script
  5. Wordpress: listar subpáginas dentro de una página
Valoración:
1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (Sin calificar)
Loading ... Loading ...




Leave a Reply