Ayuda en creacion Shell Script

Imagen de altexx
0 puntos

Hola!

 

Soy nuevo en este foro, y practicamente tambien en esto de linux.

Nunca antes había usado linux, y que me estan enseñando en el ciclo formativo, la verdad es que estoy muy interesado, y estoy intentando dejar windows porque hace tiempo me di cuenta de que era una basura, pero no tenia los conocimientos para cambiar de sistema operativo asi como asi.

Bueno he estado mirando los posts de este foro y la verdad es que teneis mucha razon, son muchas las personas que se meten aqui esperando que se lo den todo echo.

Me podeis creer o no, pero yo estoy muy interesado en aprender, ya que de cara al futuro no tienes ningun foro que te ayude, cuando el jefe te diga hazme esto, se lo tienes que hacer, y si te pide dos cosas y ninguna de las 2 las sabes, la maleta te la preparan rapido.

Bueno, todo esto esto viene a que yo tengo un problema:

Por suerte o por desgracia hay profesores que no te enseñan lo que te tienen que enseñar (que cuando eres alumno lo agradeces porque asi te libras de hacer tareas dificiles pero cuando te vas haciendo mayor y ves el futuro próximo, te cagas en ese profesor lo que te queda de vida), de manera que ahora estoy haciendo el crédito de síntesis, donde tengo que demostrar lo que he aprendido a lo largo de los 2 años de mis estudios.

Ahora claro, yo tengo el ejercicio siguiente, tengo que crear un shell script que haga lo siguiente:

  • Gestionar el registro de usuarios.
  • Assignacion de privilegios.
  • Creacion y assignacion de directorios personales.
  • Assignacion de usuarios a grupos.
  • Eliminacion de usuarios.

Ya he visto en este mismo foro una pregunta exactamente igual, probablemente hayan sacado el ejercicio de algun lado (¬¬) y mi problema es el siguiente:

No te ni idea de como hacer un shell script que haga eso, es mas, no tengo ni idea de como se hace un shell script, lo justo para saber que se empieza con #!/bin/bash. Entonces, como no, el sr google ayuda a todo el mundo, y me pongo a buscar.. pero claro, no lo encuentro, de manera que me remito a tutoriales y mas tutoriales, al man chmod, al man esto, al man lo otro.. pero claro, no entiendo nada!

Bien, con todo esto (lo siento por la charla) lo unico que pido es que me guieis un poco, no pido que me lo hagais, no quiero que me lo hagais! me quiero buscar la vida, solo quiero saber comandos o algo útil para comenzar este puñetero script, que llevo dos dias intentando comenzar, y no veo mas que posts diciendo que use chmod, para los privilegios, bien, yo lo uso, pero que pongo:

#!/bin/bash

chmod 777 "usuario"?

No se como usar un comando en un shell script, nose si se tienen que usar como si fuera en linea de comandos o de manera diferente, nose como asignar un usuario a un grupo, eso no lo hace ya el adduser? pero si lo tengo creado ya, como le asigno un usuario a un grupo?

Solo pido una ayudita, decirme por donde empezar y de lo demas me intentare hacer cargo yo. No tengo ningun problema en ayudaros en los que pueda, aunque yo soy un novato, pero si teneis alguna duda de como montar un servidor DNS, DHCP, FTP, SSH.. eso si que lo he aprendido en 2º que es cuando me han metido caña, pero un shell script? me han pillado en bragas..

Muchas gracias de antemano y saludos a todos.

 

 PD: He leido las normas del foro, pero si me he saltado alguna decirmelo sin pudor, no intento molestar, solo aprender y aprovar este crédito para llegar a ser un buen informático ubuntero, os lo prometo! :)

 

Imagen de joseluis
+1
0
-1

Hace unos meses slap dio un par de charlas (por irc, canal cupie) sobre shell-scripts que creo te pueden servir perfectamente para aprender los fundamentos del shell-scripts.

La primera charla la puedes leer aqui y la segunda la tienes en este enlace.

Te aconsejo que las leas e intentes ponerlas en práctica aplicándolas a tu problema, y si tienes algún problema concreto (no vale con un no se por donde empezar) abre un hilo y alguno intentará echarte una mano.


Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de altexx
+1
0
-1

Vale, tengo parte del ejercicio de scripts echo gracias a compañeros de clase e informacion varia en internet, ahora necesito hacer otro ejercicio, que no como hacerlo.

Tengo un menu echo que va a diferentes opciones, necesito que una opcion cree usuarios a partir de una ruta de un archivo .txt, es decir, que diciendole como variable la ruta de un archivo.txt, debe crear usuarios con los nombres y apellidos que hay dentro de ese archivo, ademas de poner una contraseña que sera las dos primeras letras del nombre, las 2 primeras del 1er apellido y las 2 primeras del segundo apellido.

Alguien sabe como puedo ponerlo para crear un usuario a traves de un archivo .txt que hay en una ruta? y ademas poner la contraseña automaticamente? he pensado que con un adduser se podria pero como la contraseña debe ser automatica seria mejor un useradd, pero tb tiene que crear el usuario dentro de una carpeta especificada por mi que es: /home/ccivicoc y se crear la carpeta pero no como hacerlo para que el usuario se cree en esa carpeta, se crea el usuario, pero /home/$usuari no en la carpeta que he dicho yo.. tengo muchas dudas, si alguien me resuelve alguna yo intentare hacer lo que pueda.

Gracias de antemano

+1
0
-1
Imagen de joseluis
+1
0
-1

Para crear los usuarios utiliza mejor useradd, así que ya sabes man useradd para ver todas las opciones que son muchas.

Para leer el fichero echa un vistazo a este hilo, en concreto el punto donde habla de ¿Cómo leer un fichero?.

De ese mismo hilo también te puede interesar el apartado que cuenta ¿Cómo acceder a "subcadenas" de un string? (esto te puede servir para lo de las dos primeras letras del nombre y apellidos).


Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de altexx
+1
0
-1

Una pregunta mas, tengo lo siguiente:

#!/bin/bash
read -p "Escriu nom d'usuari: " nom
useradd -G $grup $nom
mkdir /home/$nom
passwd $nom
if [ -d /home/cccirera/$grup]
then
mkdir /home/cccirera/$grup
else
chown $usuari:$grup /home/cccirera/$grup
chmod 770 /home/cccirera/$grup
fi

me da error en la linea 6, como puedo poner ese if para que si no existe la carpeta /home/cccirera/$grup la cree?
nose como hacer el if.

gracias de antemano

+1
0
-1
Imagen de carsses
+1
0
-1

La sintaxis es la correcta?el if en shell se escribe así? []?

+1
0
-1

Javier

Imagen de slap
+1
0
-1

Si el script lo tienes tal cual lo has puesto aquí, dudo que te funcione.

¿Qué valores tienen las variables $grup y $usuari?
¿Por qué creas el directorio /home/$nom y luego intentas crear el directorio /home/ccciera/$grup?
¿Existe el directorio /home/ccciera? <- Es posible que el error que comentas sea esto.

Saludos.
----
Slap

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de joseluis
+1
0
-1

Además de lo que te ha comentado slap, tienes un fallo en el código que has puesto (tal vez se trate simplemente de un error en la transcripción) que ocasionaría un error en la línea del if, entre /home/cccirera/$grup y el ] te falta al menos un espacio, esa línea en lugar de ser

if [ -d /home/cccirera/$grup]

debería ser

if [ -d /home/cccirera/$grup ]

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de altexx
+1
0
-1

he leido en una pagina que la estructura es la siguiente:

if[condicion]
then
acciones
else
acciones
fi

sin los [ ] me da error igualmente

+1
0
-1
Imagen de gus20
+1
0
-1

el verdadero problema radica en el espacio que te falta antes de escribir el corchete en la linea 6, como anteriormente te mencionaron, el codigo que esta adentro del if es el correcto y la estructura tambien. Si luego deque arregles eso el problema sigue, informá exactamente el codigo de error y lo que escribe así vemos que es lo que puede ser.

Saludos

::Gustavo::

+1
0
-1
Imagen de altexx
+1
0
-1

finalmente ya e acabado el shell script, solo me falta una única cosita..
como puedo hacer para que cuando acabe el if en este shell script, vuelva otra vez al menu en vez de salir de shell?

#!/bin/bash
echo
echo " MENÚ"
echo
echo "Seleccioneu una de les següents opcions: (recomana't fer-ho per ordre)"
echo ""
echo " A) Afegir grups"
echo " B) Afegir usuaris i assignar a carpeta amb permissos"
echo " C) Assignació de privilegis a un arxiu"
echo " D) Afegir usuaris des de d'un fitxer"
echo " E) Eliminació d'usuaris"
echo " F) Assignar usuaris a un directori"
echo " X) Sortir"
echo ""
read -p "Has escollit l'opció: " opcio
case $opcio in
A|a) if id |grep uid=0
then
read -p "Escriu el nom del grup: " grup
groupadd $grup
echo "Grup creat satisfactoriament"
else
echo "No tens privilegis de root"
fi;;

Gracias por vuestra ayuda anterior, sois muy amables!

+1
0
-1
Imagen de albert29
+1
0
-1

Haz un while infinito. Mira por google cual es la sintaxis del while en bash. Como tienes una opcion de tu menu que es "sortir" puedes hacer un while cuya expresion siempre sea cierta y en la opcion X) hacer un exit.

+1
0
-1