Ayuda con Script de Linux

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
Eddis
Forista Nuevo
Forista Nuevo
Mensajes: 1
Registrado: Lun May 31, 2010 7:46 pm

Ayuda con Script de Linux

Mensaje por Eddis » Lun May 31, 2010 8:07 pm

Hola a todos.
Tengo unas cuantas dudas tengo que hacer un shellscript y me faltan algunos puntos. El ejercicio es este:

El programa deberá tener las siguientes características:
? Solicitud de login de usuario – obligatorio y que no exista previamente en el sistema

? Solicitud de uid (número de identificación de usuario) – no obligatorio. Si se introduce este
campo habrá que comprobar que no haya otro usuario en el sistema que ya lo esté usando.
Una vez introducido también debe existir la opción de quitarlo

? Solicitud de información personal de usuario – no obligatorio. Información de tipo personal,
como nombre completo, departamente al que pertenece dentro de la empresa, teléfono del
trabajo, ... etc. lo que se quiera en general

? Solicitud de directorio “home” para el usuario – no obligatorio. El sistema asignará uno
automáticamente si no se introduce este dato

? Solicitud de grupo primario – no obligatorio. Como en el caso del uid, si se introduce habrá
que hacer las comprobaciones necesarias

? Solicitud de lista de grupos secundarios – no obligatorio. Comprobación de que todos los
grupos que se introduzcan existan en el sistema

? Solicitud de “shell” por defecto para el usuario. Se deberá escoger de las que el sistema
admita.

? Crear o no crear automáticamente el home de usuario, en caso de que no exista.



Y esto es el ejercicio que yo he echo:

#!/bin/bash

menu() {
echo "***********************"
echo "Bienvenido al programa"
echo "***********************"

printf "\n 1. Solicitud del login \n"
printf "\n 2. Solicitud UID \n"
printf "\n 3. Informacion personal del usuario \n"
printf "\n 4. Directorio home \n"
printf "\n 5. Grupo primario \n"
printf "\n 6. Grupo secundario \n"
printf "\n 7. Solicitud del Shell \n"
printf "\n 8. Salir \n"

echo "Elige una opcion porfavor..."
echo
}
menu
read opcion


if [ $opcion -eq 1 ]; then

nombre="$log"

while cat /etc/passwd | cut -d: -f1 | grep "^$nombre$"
do

echo "Ese nombre ya existe dame otro nombre"
read nombre
echo $nombre introducido.
echo usuario $nombre finalizado

done
menu

elif [ $opcion -eq 2 ] ; then

numero="$uid"

while cat /etc/passwd | cut -d: -f3 | grep "$numero$"
do
echo "Esos numeros ya existen dame otro numero"
read numero
echo $numero introducido.
echo usuario $numero finalizado

done

echo "¿Quieres borrar el numero?"
read contestacion
case $contestacion in
si*) userdel [-r][$uid];;
no*) echo "El UID no será borrado";;
*) echo "Porfavor conteste si o no";;
esac



elif [ $opcion -eq 3 ]; then
echo "Dime tu nombre y apellidos"
read nomyape
echo "Dame tu numero de telefono"
read tlf
echo "A que departamento perteneces"
read departamento
echo "Estos son tus datos personales, muchas gracias ;)"
echo

echo $nomyape $tlf $departamento



elif [ $opcion -eq 4 ]; then
echo "Dime que directorio home quieres utilizar"
read dhome
$dhome
if [ !`test -d /home/eddis/directorio` ]; then
mkdir -p /home/eddis/directorio
fi



elif [ $opcion -eq 5 ]; then
echo "Dime tu grupo primario"
read gprimario



elif [ $opcion -eq 6 ]; then
echo "Dime la lista de grupos secundarios"
read gsecundario



elif [ $opcion -eq 7 ]; then
echo "Dame el shell que quieres utilizar"
read shell
cat /etc/passwd | cut -d: -f1,7 | grep $shell


else
exit

fi



Mi pregunta es si lo veis bien el codigo en general y si la opcion 4 esta bien y si me podeis ayudar ha hacer la 5 y la 6.
Otra de las cosas es que el menu cuando termina de ejecutar una opcion aparece otra vez el menu pero termina de ejecutarse el script :S

Un saludo a todos ;)
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 Script de Linux

Mensaje por akodo » Lun May 31, 2010 9:08 pm

Al poner "[ .... ]" estás poniendo el comando test de forma implícita con lo que poner dentro otro test no lo veo claro.

Código: Seleccionar todo

if [ -d /home/usuario ] ; then
El símbolo "!" no tengo claro que sea ese el que haya que poner para negar el test. Conviene que lo compruebes porque no estoy seguro.

Para declarar funciones en bash creo que se hacía así:

Código: Seleccionar todo

function menu(){
.....
}
con el "function" delante. Además, creo que también había que poner un valor de retorno, que en cualquier caso es recomendable.
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])
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje