Necesito que me pongáis ejercicios de scripts!!!!!!!!!!

Buenas. Pues para practicar, necesito que me pongáis ejercicios de scripts, que no sean fáciles pero tampoco complicados. Me refiero por ejemplo a "muestra todos los usuarios de /etc/passwd que no sea X usuario" y cosas así.

Podéis participar y poner los que queráis eh XD
Nivel Facil

Haz un script para cambiar el UID/GID del usuario. El nombre del usuario / numero de uid / numero de gid se comprobara antes de modificar nada. Si ya existe un usuario con ese uid / gid se empezará desde 0 comentandole a user donde ha fallado (si el uid esta ocupado, si el gid esta ocupado, si el usuario no existe...) Si existe y el uid / gid no estan ocupados, se cambiará.


Es el ultimo script que he tenio que hacer para el proyecto en el que estoy. El script no deberia llevarte mas de 5 min en hacerlo...

Salu2
mik0 escribió:Nivel Facil

Haz un script para cambiar el UID/GID del usuario. El nombre del usuario / numero de uid / numero de gid se comprobara antes de modificar nada. Si ya existe un usuario con ese uid / gid se empezará desde 0 comentandole a user donde ha fallado (si el uid esta ocupado, si el gid esta ocupado, si el usuario no existe...) Si existe y el uid / gid no estan ocupados, se cambiará.


Es el ultimo script que he tenio que hacer para el proyecto en el que estoy. El script no deberia llevarte mas de 5 min en hacerlo...

Salu2

u_u lo siento pero a tantas no llego ni por asomo.
Todavía no he dado un nivel tan "fácil" pero estoy intentando aprender scripting por mi cuenta, por eso estoy mirando manuales.
Sé que en ese script hay que usar variables, cosas como "then" "if"...

Pero si quieres podrías poner el script así me hago una idea.

Y ahora por preguntar una cosa, eres de superior o de universidad?
Mercuren escribió:
mik0 escribió:Nivel Facil

Haz un script para cambiar el UID/GID del usuario. El nombre del usuario / numero de uid / numero de gid se comprobara antes de modificar nada. Si ya existe un usuario con ese uid / gid se empezará desde 0 comentandole a user donde ha fallado (si el uid esta ocupado, si el gid esta ocupado, si el usuario no existe...) Si existe y el uid / gid no estan ocupados, se cambiará.


Es el ultimo script que he tenio que hacer para el proyecto en el que estoy. El script no deberia llevarte mas de 5 min en hacerlo...

Salu2

u_u lo siento pero a tantas no llego ni por asomo.
Todavía no he dado un nivel tan "fácil" pero estoy intentando aprender scripting por mi cuenta, por eso estoy mirando manuales.
Sé que en ese script hay que usar variables, cosas como "then" "if"...

Pero si quieres podrías poner el script así me hago una idea.

Y ahora por preguntar una cosa, eres de superior o de universidad?


Superior, pero el script no tiene na que ver con el curso xD

Este es un trozo del script (no es completo, el completo mio hace mas cosas que estan debajo):

#!/bin/bash
echo -n "Introduce el nombre de usuario que va a modificar: "
read user
echo -n "Introduce numero de UID que desea (usuario): "
read uid_user
echo -n "Introduce numero de GID que desea (grupo): "
read gid_user
if [ "$user" = "`cut -d: -f1 /etc/passwd | grep $user`" ]; then
   echo Usuario valido
else
   echo Usuario no encontrado
   exit 1
fi
if [ "$uid_user" = "`cut -d: -f3 /etc/passwd | grep $uid_user`" ]; then
   echo "Disculpe sinior, pero ese UID ya esta pillado..."
else
   usermod -u $uid_user $user
fi

if [ "$gid_user" = "`cut -d: -f3 /etc/group | grep $gid_user`" ]; then
   echo "Busca otro GID, el que ha metio ya esta pillao"
else
   groupmod -g $gid_user $user
fi


La verdad es que acabo de verlo y ..puf xD como se nota que lo hice para salir del paso xDDDD (y aun asi, soy tan vago que lo puse tal cual en mi blog XD)

El script completo:

#!/bin/bash
echo -n "Introduce el nombre de usuario que va a modificar: "
read user
echo -n "Introduce numero de UID que desea (usuario): "
read uid_user
echo -n "Introduce numero de GID que desea (grupo): "
read gid_user
if [ "$user" = "`cut -d: -f1 /etc/passwd | grep $user`" ]; then
   echo Usuario valido
else
   echo Usuario no encontrado
   exit 1
fi
if [ "$uid_user" = "`cut -d: -f3 /etc/passwd | grep $uid_user`" ]; then
   echo "Disculpe sinior, pero ese UID ya esta pillado..."
else
   usermod -u $uid_user $user
fi

if [ "$gid_user" = "`cut -d: -f3 /etc/group | grep $gid_user`" ]; then
   echo "Busca otro GID, el que ha metio ya esta pillao"
else
   groupmod -g $gid_user $user
fi

echo -n "Este script se va a usar para modificar el UID/GID para OpenNebula (s/n)"
read sino

if [ "$sino" = "s" ]; then

if [ "$user" = "oneadmin" ]; then
   echo "Ok! El usuario elegido es oneadmin, se sigue con el script!"
   ONEHOME=/var/lib/one
   chown -R $user:$user "$ONEHOME/.ssh"
   chmod 755 "$ONEHOME/.ssh"
   chmod 600 "$ONEHOME/.ssh/authorized_keys"
   chown -R $user:$user /var/lib/one
   chown $user /var/log/one
   chown $user /var/run/one
   chown $user /var/lock/one
if [ -d "$ONEHOME/images" ]; then
   echo "La carpeta images ya existe, omitiendo paso"
else
   mkdir -p $ONEHOME/images
   chown -R $user:$user "$ONEHOME/images"
fi
else
   echo "Nor!!!"
   #echo "QUE ME ESTAS CONTANDO SHURMANO, EL UZUARIO HELEJIO NO ES ONEADMIN!!!!!!."
   exit 1
fi
else
   echo "Pues nada, hasta aqui pescao vendio. BYE!!!"
   exit 1
fi
exit 0


Si lo que quieres es empezar con bash, busca en google manuales completos.

ejm: http://www.gnu.org/software/bash/manual/bashref.html

Salu2
Muestra por pantalla los tres directorios que más ocupen en tu home.
haz un scritp que se quede corriendo en la maquina y cada 5 minutos compruebe si el usuario root esta conectado

si esta conectado tienes que informar que sesión usa y si esta conectado por ssh. Si esta conectado pro ssh debe salir su ip
Yo te voy a comentar uno mas fácil aun :)

Un script que se quede corriendo (sin necesidad de terminal abierta) y ejecute un comando cada 24h

Esto te puede valer en un futuro si quieres usar rsync con algún servidor :)
KiAn escribió:Yo te voy a comentar uno mas fácil aun :)

Un script que se quede corriendo (sin necesidad de terminal abierta) y ejecute un comando cada 24h

Esto te puede valer en un futuro si quieres usar rsync con algún servidor :)


Para aprender algunos comandos básicos puede valer, pero en un servidor usarías cron.
Venga, una idea.

Dado un directorio/path por el usuario, saca por pantalla el tamanyo total que ocupan los archivos con una determinada extensión, y ordena las extensiones por tamanyo.

Es decir, si le pasas /home/user te podría sacar lo siguiente:

.mp3    5GB
.ogg    3.1GB
.avi      1.5GB
.doc     200MB
etc...
Yog-Sothoth escribió:
KiAn escribió:Yo te voy a comentar uno mas fácil aun :)

Un script que se quede corriendo (sin necesidad de terminal abierta) y ejecute un comando cada 24h

Esto te puede valer en un futuro si quieres usar rsync con algún servidor :)


Para aprender algunos comandos básicos puede valer, pero en un servidor usarías cron.

yo aun rulo mis script así, tengo un rsync a debian que lo ejecuto cada 24h xD
9 respuestas