Scripts en bash, no s ecomo hacer que funcione
Publicado: Dom Mar 13, 2005 9:41 pm
hola se supone que para mañana tengo que tener una practica de script que controloce la opcion elegida de n usuarios introducidos, teneindo en cuanta que el uid no se repita, esto e slo que tengo y no funciona y no se que hacer ..., si me podeis ayudar, mi correo es mi_vidamar@hotmail.com
menu(){
echo " "
echo "MENU:elige una de las siguientes opciones."
echo " "
echo " -c para comprobar contraseña"
echo " -l para comprobar usuario"
echo " -g para comrpobar gid"
echo " -u para comprobar uid"
echo " -d para comprobar directorio base"
echo " -i para comprobar intérprete de comandos"
echo " -s para salir"
echo " "
}
contraseña(){
echo " "
echo "Utilizando el comando grep entro la copia de shadow, en el directorio /home/mar"
echo "y busco el usuario intoducio, que es el parametro 2, de este corto el segundo campo"
echo "que es la contraseña, para comprarala posteriormente y lo guardo en el fichero contraseñas.txt"
grep "$1" /home/mar/shadow | cut -d ":" -f1,2 > contraseñas.txt
echo " "
echo "Asigno el valor del fichero contraseñas.txt a la variable b"
echo " "
b=`cat contraseñas.txt`
echo " "
echo "Asignao un signo de exclamancion a la variable a, puesto que si el usuario"
echo "no tiene contraseña aparecera de este modo"
a=`expr !`
echo " "
echo "Comienza el bucle if, comparo el valor de a y el valor de b"
echo " "
if test $b != $a
echo " "
echo "Si b y a son iguales, es decir b vale !, entonces el usuario no tendria contraseña"
then
echo " "
echo "El usuario $2 SI tiene contraseña"
echo " "
echo "Muestro el contenido de b: $b "
echo "Muestro el contenido de a: $a "
echo " "
else
echo "Si b es distinto de ! entonce, el usuario si tiene contraseña"
echo " "
echo "El usuario $2 NO tiene contraseña"
echo " "
echo "Muestro el contenido de b:`more contraseñas.txt`"
echo "Muestro el contenido de a: $a "
fi
echo " "
echo "Termino el boque if"
echo " "
}
validar_argumentos(){
echo " "
echo "Empieza la funcion validar_argumentos"
echo " entramos en if "
b=`$#`
if test "$#" -le 3
echo "iff... ... "
echo "$#"
echo "$b"
then
echo " "
echo "Introduce una opción y un usuario como mínimo"
echo " "
exit 1
else
echo "Argumentos validados"
fi
}
validar_shell(){
echo "Empieza la funci� validar_shell"
grep "$2:/bin/*" /etc/passwd |cut -d ":" -f1,7 > todo.txt
cat todo.txt | grep -v "$2:/bin/*" > basura.txt
diff basura.txt todo.txt>/dev/null
if test $? -eq 0
then
echo " "
echo "La shell NO es válida"
echo " "
else
mv basura.txt todo.txt
echo " "
echo "La shell SI es válida"
echo " "
fi
}
validar_home(){
echo "Empieza la funci� validar_home"
grep "$2:/*" /etc/passwd |cut -d ":" -f1,6 > todo.txt
cat todo.txt | grep -v "$2:/*" > basura.txt
diff basura.txt todo.txt>/dev/null
if test $? -eq 0
then
echo " "
echo "El home NO es válido"
echo " "
else
mv basura.txt todo.txt
echo " "
echo "El home SI es válido"
echo " "
fi
}
validar_uid(){
echo "Empieza la funci� validar_uid"
grep "$2:*" /etc/passwd |cut -d ":" -f1,3 > todo.txt
if test $? -eq 0
then
echo " "
echo "La shell NO es válida"
echo " "
else
mv basura.txt todo.txt
echo " "
echo "La shell SI es válida"
echo " "
fi
}
validar_gid(){
echo "Empieza la funci� validar_gid"
grep "$2:*" /home/mar/passwd |cut -d ":" -f1,4 > todo.txt
cat todo.txt | grep -v "$2:*" > basura.txt
diff basura.txt todo.txt>/dev/null
if test $? -eq 0
then
echo " "
echo "La shell NO es válida"
echo " "
else
mv basura.txt todo.txt
echo " "
echo "La shell SI es válida"
echo " "
fi
}
validar_usuario(){
echo " "
echo "Empieza la funcion validar_usuario"
grep "$1" /home/mar/passwd | cut -d ":" -f1 > todo.txt
grep "$1" /home/mar/bin/todo.txt
b=`$todo.txt`
if test $b=$1
echo " $b "
echo " $1 "
then
echo "El usuario existe"
else
echo "El usuario no existe"
fi
}
validar_argumentos
case $1 in
-c)
contraseña
;;
-u)
validar_uid
;;
-g)
validar_gid
;;
-d)
validar_home
;;
-i)
validar_shell
;;
-l)
validar_usuario
;;
-s)
exit 5
;;
*)
menu
;;
esac
menu(){
echo " "
echo "MENU:elige una de las siguientes opciones."
echo " "
echo " -c para comprobar contraseña"
echo " -l para comprobar usuario"
echo " -g para comrpobar gid"
echo " -u para comprobar uid"
echo " -d para comprobar directorio base"
echo " -i para comprobar intérprete de comandos"
echo " -s para salir"
echo " "
}
contraseña(){
echo " "
echo "Utilizando el comando grep entro la copia de shadow, en el directorio /home/mar"
echo "y busco el usuario intoducio, que es el parametro 2, de este corto el segundo campo"
echo "que es la contraseña, para comprarala posteriormente y lo guardo en el fichero contraseñas.txt"
grep "$1" /home/mar/shadow | cut -d ":" -f1,2 > contraseñas.txt
echo " "
echo "Asigno el valor del fichero contraseñas.txt a la variable b"
echo " "
b=`cat contraseñas.txt`
echo " "
echo "Asignao un signo de exclamancion a la variable a, puesto que si el usuario"
echo "no tiene contraseña aparecera de este modo"
a=`expr !`
echo " "
echo "Comienza el bucle if, comparo el valor de a y el valor de b"
echo " "
if test $b != $a
echo " "
echo "Si b y a son iguales, es decir b vale !, entonces el usuario no tendria contraseña"
then
echo " "
echo "El usuario $2 SI tiene contraseña"
echo " "
echo "Muestro el contenido de b: $b "
echo "Muestro el contenido de a: $a "
echo " "
else
echo "Si b es distinto de ! entonce, el usuario si tiene contraseña"
echo " "
echo "El usuario $2 NO tiene contraseña"
echo " "
echo "Muestro el contenido de b:`more contraseñas.txt`"
echo "Muestro el contenido de a: $a "
fi
echo " "
echo "Termino el boque if"
echo " "
}
validar_argumentos(){
echo " "
echo "Empieza la funcion validar_argumentos"
echo " entramos en if "
b=`$#`
if test "$#" -le 3
echo "iff... ... "
echo "$#"
echo "$b"
then
echo " "
echo "Introduce una opción y un usuario como mínimo"
echo " "
exit 1
else
echo "Argumentos validados"
fi
}
validar_shell(){
echo "Empieza la funci� validar_shell"
grep "$2:/bin/*" /etc/passwd |cut -d ":" -f1,7 > todo.txt
cat todo.txt | grep -v "$2:/bin/*" > basura.txt
diff basura.txt todo.txt>/dev/null
if test $? -eq 0
then
echo " "
echo "La shell NO es válida"
echo " "
else
mv basura.txt todo.txt
echo " "
echo "La shell SI es válida"
echo " "
fi
}
validar_home(){
echo "Empieza la funci� validar_home"
grep "$2:/*" /etc/passwd |cut -d ":" -f1,6 > todo.txt
cat todo.txt | grep -v "$2:/*" > basura.txt
diff basura.txt todo.txt>/dev/null
if test $? -eq 0
then
echo " "
echo "El home NO es válido"
echo " "
else
mv basura.txt todo.txt
echo " "
echo "El home SI es válido"
echo " "
fi
}
validar_uid(){
echo "Empieza la funci� validar_uid"
grep "$2:*" /etc/passwd |cut -d ":" -f1,3 > todo.txt
if test $? -eq 0
then
echo " "
echo "La shell NO es válida"
echo " "
else
mv basura.txt todo.txt
echo " "
echo "La shell SI es válida"
echo " "
fi
}
validar_gid(){
echo "Empieza la funci� validar_gid"
grep "$2:*" /home/mar/passwd |cut -d ":" -f1,4 > todo.txt
cat todo.txt | grep -v "$2:*" > basura.txt
diff basura.txt todo.txt>/dev/null
if test $? -eq 0
then
echo " "
echo "La shell NO es válida"
echo " "
else
mv basura.txt todo.txt
echo " "
echo "La shell SI es válida"
echo " "
fi
}
validar_usuario(){
echo " "
echo "Empieza la funcion validar_usuario"
grep "$1" /home/mar/passwd | cut -d ":" -f1 > todo.txt
grep "$1" /home/mar/bin/todo.txt
b=`$todo.txt`
if test $b=$1
echo " $b "
echo " $1 "
then
echo "El usuario existe"
else
echo "El usuario no existe"
fi
}
validar_argumentos
case $1 in
-c)
contraseña
;;
-u)
validar_uid
;;
-g)
validar_gid
;;
-d)
validar_home
;;
-i)
validar_shell
;;
-l)
validar_usuario
;;
-s)
exit 5
;;
*)
menu
;;
esac