
Shell Script - comprueba usuarios
Publicado por sh0rty (3 intervenciones) el 26/11/2014 11:25:00
Buenas! estoy intentando haver un script que recibirá como único argumento el nombre de un fichero, que contendrá uno o más nombres de login (cada uno en una línea distinta). El script comprobará si cada uno de los nombres de login corresponde con usuarios locales del sistema. Si un nombre incluido en el fichero se corresponde con un usuario local, el script se limitará a mostrar el mensaje "<usuario> es un usuario local del sistema". En caso contrario mostrará el mensaje "<usuario> no es un usuario local del sistema".
Lo había enfocado de esta manera:
El problema reside en el "else" que me va a sacar una línea por cada línea del etc/passwd que comprueba y no coincida (solo necesito que cuando no exista me sake una línea diciendo que no existe). Y otra cosa que no entiendo muy bien, me veo forzado a poner = en la comparación del if ya que si pongo -eq me muestra un error diciendo que "se esperaba una expresión entera" y que yo sepa estoy comparando únicamente cadena con cadena...
¿Alguien tan amable de ayudarme?
Gracias!
Lo había enfocado de esta manera:
1
2
3
4
5
6
7
8
9
10
11
12
for i in $(cat "$1")
do
for k in $(cat /etc/passwd | cut -d ":" -f1)
do
if [ "$i" = "$k" ]; then
echo "$i es un usuario local del sistema."
# else
# echo "$i no es un usuario local del sistema."
fi
done
done
El problema reside en el "else" que me va a sacar una línea por cada línea del etc/passwd que comprueba y no coincida (solo necesito que cuando no exista me sake una línea diciendo que no existe). Y otra cosa que no entiendo muy bien, me veo forzado a poner = en la comparación del if ya que si pongo -eq me muestra un error diciendo que "se esperaba una expresión entera" y que yo sepa estoy comparando únicamente cadena con cadena...
¿Alguien tan amable de ayudarme?
Gracias!
Valora esta pregunta


0