Ayuda con ejercicios de bash

Hola, muy buenas.

Quería saber si alguien podría echarme un cable con tres ejercicios de bash que me están volviendo loco...

Los ejercicios en cuestión son:

1) Crea un script "altas_usuarios_interactivo" para dar de alta usuarios en modo interactivo. El script debe pedir los datos que se muestran abajo. Para salir del script se deberá introducir un login vacío.

ALTAS USUARIOS
===============
Nombre (login):
Nombre completo:
Contraseña:
Confirmar contraseña:
Directorio inicial:
Shell:
Grupo principal:
Grupos secundarios:

Se deberá llevar a cabo una comprobación lo más completa posible de los errores: existencia del login, comprobación de la confirmación de la contraseña, existencia y/o creación del directorio inicial y del shell, existencia del grupo principal (si no existe, se creará), etc.


En éste creo estar seguro que a base de "echo" y "read" puedo ir mostrando por pantalla los campos con "echo", pedir la información con "echo", entrarla con "read" y tal, y a base de "if" y "else" podría ir verificando si los datos se han entrado o no, pero no sé muy bien cómo hacer lo de "salir del script usando un login vacío" ni tampoco lo de "crear el grupo principal en caso de no existir".

2) Crear un guión "conexión" que compruebe cada 15 segundos si un usuario ha entrado en el sistema. El argumento se pasa en el momento de la llamada. Si no se pasa, se pide dentro del guión. También informará del terminal o terminales donde dicho usuario está conectado. Cuando el usuario entre, el programa debe mostrar el siguiente mensaje: "El usuario XXXXX ha entrado en el sistema" y finalizar.


En éste sé poco más que "nada"... Lo de los 15 segundos entiendo que será mediante el comando "sleep", luego el mensaje mostrado será con un "echo", finalmente un "exit" para finalizar... pero ya.

3) Crear un guión shell "renombrar" que, a partir de un directorio que se le pasa como argumento, renombre los nombres de los ficheros que contiene ese directorio añadiéndoles a dichos nombres un guión bajo y el nombre del propietario del fichero. Por ejemplo, si se tiene este fichero: "-rwxr--r-- 1 Zeus Win 12 Jan 25 11:39 barco" tendría que renombrarlo como "barco_Zeus".


He estado googleando y lo único que he encontrado es que se podrían usar los comandos "rename" o "mv", pero ya. Por lo demás, ni idea...

Imagino que será muy difícil y que estaré pidiendo demasiado, pero de verdad, si alguien pudiera ayudarme le estaría eternamente agradecido.
Jolti135 escribió:1)
Se deberá llevar a cabo una comprobación lo más completa posible de los errores: existencia del login, comprobación de la confirmación de la contraseña, existencia y/o creación del directorio inicial y del shell, existencia del grupo principal (si no existe, se creará), etc.

Por ejemplo If nombre=vacio then exit
o
if nombre!=vacio then
.... demas comprobaciones
else
...salimos..

Para creación del usuario, mira useradd
2)

En éste sé poco más que "nada"... Lo de los 15 segundos entiendo que será mediante el comando "sleep", luego el mensaje mostrado será con un "echo", finalmente un "exit" para finalizar... pero ya.


El comando w/who te muestra usuarios activos, con grep puedes buscar coincidencias en las salidas.

3)
He estado googleando y lo único que he encontrado es que se podrían usar los comandos "rename" o "mv", pero ya. Por lo demás, ni idea...

Imagino que será muy difícil y que estaré pidiendo demasiado, pero de verdad, si alguien pudiera ayudarme le estaría eternamente agradecido.

Para recorrer ficheros...
for i in $( ls ); do
      echo item: $i
done


si tienes problemas con los espacios con la variable IFS puedes cambiar el separador por defecto (espacio).

Jugando un poco con ls puedes obtener quien es el propietario del fichero y con cut, seleccionarlo. mv para moverlo

Si tienes alguna duda con los comandos, usa man o internet mismamente
1 respuesta