Diferencia entre revisiones de «Semana del Ñu y el pingüino 2014»
Sin resumen de edición |
Sin resumen de edición |
||
(No se muestran 6 ediciones intermedias del mismo usuario) | |||
Línea 7: | Línea 7: | ||
== Concursos<br/> == | == Concursos<br/> == | ||
Puedes también participar en los concursos especificados a continuación, el ingreso es 1bs pero el premio a los ganadores es de ''' | Puedes también participar en los concursos especificados a continuación, el ingreso es 1bs pero el premio a los ganadores es de '''5000''' ctvs más un certificado. | ||
Por falta de ambientes, no habrán computadoras disponibles (tal vez alguna vieja que haya que arrancar con live CD/USB). Por eso es mejor traer una '''laptop''' para concursar. | Por falta de ambientes, no habrán computadoras disponibles (tal vez alguna vieja que haya que arrancar con live CD/USB). Por eso es mejor traer una '''laptop''' para concursar. | ||
Línea 24: | Línea 24: | ||
| <br/> | | <br/> | ||
| colspan="2" style="text-align: center; background-color: rgb(153, 204, 255)" | <u>'''CONCURSOS'''</u><br/> | | colspan="2" style="text-align: center; background-color: rgb(153, 204, 255)" | <u>'''CONCURSOS'''</u><br/> | ||
| style=" | | style="background-color: rgb(255, 204, 153); text-align: center" colspan="3" | <u>'''CHARLAS'''</u><br/> | ||
|- | |- | ||
| 14:30 15:00<br/> | | 14:30 15:00<br/> | ||
Línea 54: | Línea 38: | ||
*Programación gráfica | *Programación gráfica | ||
| style="background-color: rgb(255, 204, 153) | | style="background-color: rgb(255, 204, 153); text-align: center" | | ||
'''CUPS''' | |||
''' | |||
(Franklin Torrez) | |||
| style="background-color: rgb(255, 204, 153); text-align: center" | '''Criterios de Diseño Web'''<br/> | |||
| style="background-color: rgb(255, 204, 153)" | <p style="text-align: center">'''Blender'''</p><p style="text-align: center">(Rodrigo)</p> | |||
|- | |- | ||
| 15:00 15:30<br/> | | 15:00 15:30<br/> | ||
Línea 72: | Línea 56: | ||
*Programación gráfica | *Programación gráfica | ||
| style="background-color: rgb(255, 204, 153) | | style="background-color: rgb(255, 204, 153); text-align: center" | | ||
'''CUPS''' | |||
''' | |||
(Franklin Torrez) | |||
| style="background-color: rgb(255, 204, 153); text-align: center" | '''Criterios de Diseño Web'''<br/> | |||
| style="background-color: rgb(255, 204, 153)" | <p style="text-align: center"></p><p style="text-align: center"></p> | |||
|- | |- | ||
| 15:30 16:00<br/> | | 15:30 16:00<br/> | ||
Línea 92: | Línea 74: | ||
*Programación gráfica | *Programación gráfica | ||
| style="background-color: rgb(255, 204, 153)" | | | style="background-color: rgb(255, 204, 153)" | <p style="text-align: center">'''Inkscape'''</p><p style="text-align: center">(Cristhian Yupanqui)</p> | ||
''' | | style="background-color: rgb(255, 204, 153); text-align: center" | <p style="text-align: center">'''Virtualización KVM'''</p><p style="text-align: center">(Gabriel Condori)</p> | ||
| style="background-color: rgb(255, 204, 153); text-align: center" | | |||
'''Android''' | |||
( | (Cristiam) | ||
|- | |- | ||
| 16:00 16:30<br/> | | 16:00 16:30<br/> | ||
Línea 110: | Línea 92: | ||
*Programación gráfica | *Programación gráfica | ||
| style="background-color: rgb(255, 204, 153)" | <br/> | | style="background-color: rgb(255, 204, 153); text-align: center" | <p style="text-align: center">'''Inkscape'''</p>(Cristhian Yupanqui)<br/> | ||
| style="background-color: rgb(255, 204, 153)" | <p style="text-align: center">''' | | style="background-color: rgb(255, 204, 153)" | <p style="text-align: center">'''Virtualización KVM'''</p><p style="text-align: center">(Gabriel Condori)</p> | ||
| style="background-color: rgb(255, 204, 153)" | <p style="text-align: center">'''Linux Embebido'''</p><p style="text-align: center">(Javier Zelada)</p> | | style="background-color: rgb(255, 204, 153)" | <p style="text-align: center">'''Linux Embebido'''</p><p style="text-align: center">(Javier Zelada)</p> | ||
|- | |- | ||
Línea 124: | Línea 106: | ||
*Programación gráfica | *Programación gráfica | ||
| style="background-color: rgb(255, 204, 153)" | <br/> | | style="background-color: rgb(255, 204, 153); text-align: center" | <p style="text-align: center">'''Desarrollo web con herramientas libres'''</p>(Victor Aguilar)<br/> | ||
| style="background-color: rgb(255, 204, 153)" | < | | style="background-color: rgb(255, 204, 153); text-align: center" | <p style="text-align: center">'''GPG'''</p><p style="text-align: center">(Rodrigo Garcia)</p> | ||
| style="background-color: rgb(255, 204, 153)" | < | | style="background-color: rgb(255, 204, 153); text-align: center" | <p style="text-align: center">'''Linux Embebido'''</p><p style="text-align: center">(Javier Zelada)</p> | ||
|- | |- | ||
| 17:00 17:30<br/> | | 17:00 17:30<br/> | ||
Línea 137: | Línea 119: | ||
*Scripts de automatización Programación gráfica | *Scripts de automatización Programación gráfica | ||
| style="background-color: rgb(255, 204, 153)" | <br/> | | style="background-color: rgb(255, 204, 153); text-align: center" | <p style="text-align: center">'''Desarrollo web con herramientas libres'''</p>(Victor Aguilar)<br/> | ||
| style="background-color: rgb(255, 204, 153)" | < | | style="background-color: rgb(255, 204, 153); text-align: center" | <p style="text-align: center">'''GPG'''</p><p style="text-align: center">(Rodrigo Garcia)</p> | ||
| style="background-color: rgb(255, 204, 153)" | < | | style="background-color: rgb(255, 204, 153)" | <p style="text-align: center">'''cakephp'''</p><p style="text-align: center">(Amilkar Shegrid Contreras Castro)</p> | ||
|- | |- | ||
| 17:30 18: | | 17:30 18:30<br/> | ||
| style="text-align: center; background-color: rgb(153, 204, 204)" | | | style="text-align: center; background-color: rgb(153, 204, 204)" | | ||
*CTF | *CTF | ||
Línea 151: | Línea 133: | ||
*Programación gráfica | *Programación gráfica | ||
| style="background-color: rgb(255, 204, 153)" | <br/> | | style="background-color: rgb(255, 204, 153); text-align: center" | | ||
| style="background-color: rgb( | '''Hardware Libre''' | ||
| style="background-color: rgb(255, 204, 153)" | | |||
(Rommy Quispe) | |||
| style="background-color: rgb(255, 204, 153); text-align: center" | | |||
'''Reacción Climática''' | |||
(Amos Batto) | |||
| style="background-color: rgb(255, 204, 153); text-align: center" | | |||
'''DJANGO''' | |||
(Jhonny Cruz) | |||
|- | |||
| | |||
19:00 | |||
20:00 | |||
| style="text-align: center; background-color: rgb(153, 204, 204)" | <br/> | |||
| style="text-align: center; background-color: rgb(153, 204, 204)" | <br/> | |||
| style="background-color: rgb(255, 204, 153); text-align: center" | | |||
'''Filosofía del software libre''' | |||
(Georgia Ortiz) | |||
| style="background-color: rgb(255, 204, 153); text-align: center" | | |||
'''Servidor de Dominio''' | |||
(Miguel Yucra) | |||
| style="background-color: rgb(255, 204, 153); text-align: center" | | |||
'''Robótica''' | |||
Grover | |||
|} | |} | ||
== Lugar<br/> == | == Lugar y Fecha<br/> == | ||
<blockquote>Del Lunes 17 de Noviembre al Viernes 21 de Noviembre</blockquote> | |||
Carrera informática UMSA (Monoblock Central), Los concursos en la '''Biblioteca de la Carrera''' y las '''charlas''' en la sala audiovisual 2do piso | Carrera informática UMSA (Monoblock Central), Los concursos en la '''Biblioteca de la Carrera''' y las '''charlas''' en la sala audiovisual 2do piso | ||
== Info Extra == | == Info Extra<br/> == | ||
=== Concruso de scripts para automatización de tareas<br/> === | === Concruso de scripts para automatización de tareas<br/> === | ||
Ganador: Nils Flores <nils.flores@gmail.com> | |||
=== Ejercicios solucionados === | |||
<pre>Ejercicio 2 | |||
== Situación == | |||
Necesita tener en un archivo una lista de las personas que accedieron al sistema mediante ssh (secure shell) | |||
== Ejercicio == | |||
Realice un script que genere un archivo de reportes con la lista detallada de usuarios accedierón por ssh a la computadora cada vez que se ejecute. | |||
</pre> | |||
Sol <source lang="bash"> | |||
#!/bin/bash | |||
# reporta en el archivo logdeautenticacion.txt los rregistros de | |||
# logueo por ssh | |||
cat /var/log/auth* | grep Accepted >> /home/logdeautenticacion.txt | |||
exit 0 | |||
</source> | |||
sol. | |||
<pre> | |||
Ejercicio3 | |||
== Situación == | |||
Imagine que administra un sistema y que debe asegurarse de que los | |||
usuarios no activos no ocupen espacio en la memoria que los usuarios | |||
activos necesitan. | |||
Para eso usted decide hacer un script al cual se especifica el | |||
directorio y el "El número máximo de días" de antiguedad que puede | |||
tener un archivo para ser eliminado. | |||
== Ejercicio == | |||
Dado un directorio "D" y un número de días "d", realice un script que | |||
le permita eliminar los archivos con una atingüedad mayor o igual | |||
que "d" en el directorio "D". | |||
Ejemplo de llamada al script: | |||
./EliminarArchivosviejos /var/tmp/ 50 | |||
Lo que hará el script "EliminarArchivosViejos" es eliminar todos | |||
los archivos que tengan al menos 50 días de antigüedad. | |||
./EliminarArchivosviejos /var/tmp/ 2 | |||
Ahora el script mencionado eliminará los archivos que tengan al menos | |||
2 días de antigüedad dentro la carpeta /var/tmp | |||
</pre> | |||
<source lang="bash"> | |||
#!/bin/bash | |||
# Hace una comprobación de tiempo y elimina los archivos mas viejos | |||
# al numero de dias del primer argumento que esten en la carpeta | |||
# especificada como segundo argumento | |||
Carpeta=$1 | |||
Tiempo=$2 | |||
find $Carpeta* -mtime +$Tiempo -exec rm {} \ | |||
exit 0 | |||
</source> | |||
<pre> | |||
Ejercicio 4 | |||
== Situación == | |||
Imagine que se tiene una carpeta dentro de su directorio personal | |||
que cambia constantemente. Dentro esa carpeta hay archivos | |||
de mucha importancia de los cuales debe tener respaldos. | |||
Se tiene el siguiente script que se encarga de hacer una copia | |||
de seguridad y la guarda en dos diferentes directorios | |||
cada vez que se ejecuta. | |||
################################################################## | |||
#!/bin/bash | |||
CARPETA_A_COPIAR=$HOME/Plantillas | |||
DESTINO_1=/var/tmp/ | |||
DESTINO_2=$HOME/.copia/ | |||
# Comprueba existencia | |||
if [ ! -d $CARPETA_A_COPIAR ] | |||
then | |||
echo "ERROR - No existe la carpeta origen $CARPETA_A_COPIAR " | |||
exit 1 | |||
fi | |||
# Comprueba carpetas destino | |||
if [ ! -d $DESTINO_1 ] || [ ! -d $DESTINO_2 ] | |||
then | |||
echo "ERROR - No existe al menos una carpeta destino " | |||
exit 1 | |||
fi | |||
# Se realiza la copia | |||
cp -rf $CARPETA_A_COPIAR $DESTINO_1 | |||
cp -rf $CARPETA_A_COPIAR $DESTINO_2 | |||
echo "Copias de seguridad realizadas" | |||
echo "en $DESTINO_1 y $DESTINO_2" | |||
exit 0 | |||
################################################################## | |||
Un problema con el script anterior es que de no existir alguna de | |||
las carpetas destino no se ejecuta. | |||
El otro es que reemplaza las copias de seguridad que se hayan | |||
hecho antes, imagine que usted necesita las últimas 5 copias de | |||
seguridad por si ocurren cambios indeseables. | |||
== Ejercicio == | |||
Modifique el script anterior para que si no existe alguna de las | |||
carpetas destino crearlas y en ellas guardar las copias. | |||
Tambíen el script debe mantener las 5 últimas copias de seguridad | |||
dentro de ambas carpetas destino. | |||
Usted escoja como nombrar a las copias de seguridad pero recuerde | |||
que deben haber máximo 5 copias de la carpeta orgien dentre de | |||
cada una de las dos carpetas destino y estas deben ser las últimas | |||
5 copias de seguridad. | |||
Esto significa, si el script se ejecuta 6 veces este debe eliminar | |||
la primera copia que es la más antigua, si se ejecuta 20 veces | |||
sólo debe mantener las 5 copias más nuevas. | |||
</pre> | |||
sol. | |||
<source lang="bash"> | |||
#!/bin/bash | |||
# Hace una copia de la carpeta Plantillas dentro de HOME | |||
# otros directorios | |||
CARPETA_A_COPIAR=$HOME/Plantillas | |||
DESTINO_1=/var/tmp/ | |||
DESTINO_2=$HOME/.copia/ | |||
NUMERO_COPIAS=4 #el numero maximo de copias menos 1 | |||
NUM_ACTUAL_COPIAS=0 | |||
ARCHIVO_NUM_COPIAS="logc" | |||
NOMBRE="copia" | |||
# Comprueba existencia | |||
if [ ! -d $CARPETA_A_COPIAR ] | |||
then | |||
echo "ERROR - No existe la carpeta origen $CARPETA_A_COPIAR " | |||
exit 1 | |||
fi | |||
# Comprueba carpetas destino | |||
if [ ! -d $DESTINO_1 ] | |||
then | |||
mkdir $DESTINO_1 | |||
fi | |||
if [ ! -d $DESTINO_2 ] | |||
then | |||
mkdir $DESTINO_2 | |||
fi | |||
# Comprueba que exista archivo con el numero actual de copias | |||
if [ -e "$DESTINO_1$ARCHIVO_NUM_COPIAS" ] | |||
then | |||
n=$(cat $DESTINO_1$ARCHIVO_NUM_COPIAS) | |||
let "NUM_ACTUAL_COPIAS=$n" | |||
echo "copia numero $NUM_ACTUAL_COPIAS" | |||
else # el archivo aun no existe, se asume primera copia | |||
echo "1" > $DESTINO_1$ARCHIVO_NUM_COPIAS | |||
fi | |||
# Controla que no se exceda el numero maximo de copias | |||
if [ "$NUM_ACTUAL_COPIAS" -gt "$NUMERO_COPIAS" ] | |||
then | |||
num_eliminar=0 | |||
let "num_eliminar=$NUM_ACTUAL_COPIAS-$NUMERO_COPIAS" | |||
echo "se eliminara $DESTINO_1$NOMBRE$num_eliminar" | |||
if [ -d "$DESTINO_1$NOMBRE$num_eliminar" ] | |||
then # elimina la carpeta mas antigua | |||
rm -rf $DESTINO_1$NOMBRE$num_eliminar | |||
rm -rf $DESTINO_2$NOMBRE$num_eliminar | |||
echo "eliminada la copia $num_eliminar" | |||
fi | |||
fi | |||
# Hace la carpeta de copia de seguridad y la nombra adecuadamente | |||
n=$NUM_ACTUAL_COPIAS | |||
let "n=$n+1" | |||
echo "$n" > $DESTINO_1$ARCHIVO_NUM_COPIAS | |||
echo "realizando copia numero $n" | |||
# Se realiza las copias | |||
cp -rf $CARPETA_A_COPIAR $DESTINO_1$NOMBRE$n | |||
cp -rf $CARPETA_A_COPIAR $DESTINO_2$NOMBRE$n | |||
echo "Copias de seguridad realizadas" | |||
echo "en $DESTINO_1 y $DESTINO_2" | |||
exit 0 | |||
</source> | |||
<pre> | |||
Ejercicio 5 | |||
== Situacón == | |||
Imagine que en el sistema existen varios usuarios y usted quiere | |||
saber quienes son los que más espacio de almacenamiento utilizan | |||
en sus carpetas personales. | |||
== Ejercicio == | |||
Cree un script que registre en un archivo llamado "log_uso_home" | |||
en la carpeta /var/tmp/ , el tamaño de las carpetas /home de cada | |||
usuario cada que se ejecute sin borrar los datos anteriores. | |||
También en el archivo deberá indicar la fecha y hora de cada | |||
prueba. | |||
Ejemplo de salida: | |||
dom nov 16 21:47:28 BOT 2014 | |||
129M /home/rigoberto | |||
1,2G /home/hilerio | |||
1,5M /home/gustavo | |||
16K /home/gilda | |||
1,3M /home/marcelo | |||
1,3G /home/ | |||
lun nov 17 21:47:28 BOT 2014 | |||
144M /home/rigoberto | |||
2,4G /home/hilerio | |||
1,5M /home/gustavo | |||
16K /home/gilda | |||
5,3M /home/marcelo | |||
2,5G /home/ | |||
Nota.- Se asume que todas las carpetas personales están en /home/ | |||
</pre> | |||
sol. | |||
<source lang="bash"> | |||
#!/bin/bash | |||
# Reporta el espacio que ocupa cada usuario en su carpeta | |||
# personal habitual | |||
ARCHIVO_LOG=/var/tmp/log_uso_home | |||
ROOT_UID=0 # ID del usuario root | |||
ERROR_NON_ROOT=67 # Para salir con error de no usuario root | |||
# Asegura que el script se ejecuta como root | |||
if [ "$UID" -ne "$ROOT_UID" ] | |||
then | |||
echo "No es el usuario root no tiene permisos" | |||
exit $ERROR_NON_ROOT | |||
fi | |||
cd /home/ | |||
{ | |||
date | |||
du -h --max-depth 1 | |||
echo | |||
} >> $ARCHIVO_LOG | |||
exit 0 | |||
</source> | |||
=== CTF<br/> === | === CTF<br/> === |
Revisión actual - 19:05 21 nov 2014
Una semana entera de charlas y concursos de software libre este año es organizada por laSCE FCPN de la UMSA en La Paz.
Ingreso
Completamente libre y gratis, ven y entérate de actividades y algunas tecnologías de software libre.
Concursos
Puedes también participar en los concursos especificados a continuación, el ingreso es 1bs pero el premio a los ganadores es de 5000 ctvs más un certificado.
Por falta de ambientes, no habrán computadoras disponibles (tal vez alguna vieja que haya que arrancar con live CD/USB). Por eso es mejor traer una laptop para concursar.
Horarios
Hora |
Lunes | Martes |
Miércoles | Jueves |
Viernes |
CONCURSOS |
CHARLAS | ||||
14:30 15:00 |
|
|
CUPS (Franklin Torrez) |
Criterios de Diseño Web |
Blender (Rodrigo) |
15:00 15:30 |
|
|
CUPS (Franklin Torrez) |
Criterios de Diseño Web |
|
15:30 16:00 |
|
|
Inkscape (Cristhian Yupanqui) |
Virtualización KVM (Gabriel Condori) |
Android (Cristiam) |
16:00 16:30 |
|
|
Inkscape (Cristhian Yupanqui) |
Virtualización KVM (Gabriel Condori) |
Linux Embebido (Javier Zelada) |
16:30 17:00 |
|
|
Desarrollo web con herramientas libres (Victor Aguilar) |
GPG (Rodrigo Garcia) |
Linux Embebido (Javier Zelada) |
17:00 17:30 |
|
|
Desarrollo web con herramientas libres (Victor Aguilar) |
GPG (Rodrigo Garcia) |
cakephp (Amilkar Shegrid Contreras Castro) |
17:30 18:30 |
|
|
Hardware Libre (Rommy Quispe) |
Reacción Climática (Amos Batto) |
DJANGO (Jhonny Cruz) |
19:00 20:00 |
Filosofía del software libre (Georgia Ortiz) |
Servidor de Dominio (Miguel Yucra) |
Robótica Grover |
Lugar y Fecha
Del Lunes 17 de Noviembre al Viernes 21 de Noviembre
Carrera informática UMSA (Monoblock Central), Los concursos en la Biblioteca de la Carrera y las charlas en la sala audiovisual 2do piso
Info Extra
Concruso de scripts para automatización de tareas
Ganador: Nils Flores <nils.flores@gmail.com>
Ejercicios solucionados
Ejercicio 2 == Situación == Necesita tener en un archivo una lista de las personas que accedieron al sistema mediante ssh (secure shell) == Ejercicio == Realice un script que genere un archivo de reportes con la lista detallada de usuarios accedierón por ssh a la computadora cada vez que se ejecute.
Sol
#!/bin/bash
# reporta en el archivo logdeautenticacion.txt los rregistros de
# logueo por ssh
cat /var/log/auth* | grep Accepted >> /home/logdeautenticacion.txt
exit 0
sol.
Ejercicio3 == Situación == Imagine que administra un sistema y que debe asegurarse de que los usuarios no activos no ocupen espacio en la memoria que los usuarios activos necesitan. Para eso usted decide hacer un script al cual se especifica el directorio y el "El número máximo de días" de antiguedad que puede tener un archivo para ser eliminado. == Ejercicio == Dado un directorio "D" y un número de días "d", realice un script que le permita eliminar los archivos con una atingüedad mayor o igual que "d" en el directorio "D". Ejemplo de llamada al script: ./EliminarArchivosviejos /var/tmp/ 50 Lo que hará el script "EliminarArchivosViejos" es eliminar todos los archivos que tengan al menos 50 días de antigüedad. ./EliminarArchivosviejos /var/tmp/ 2 Ahora el script mencionado eliminará los archivos que tengan al menos 2 días de antigüedad dentro la carpeta /var/tmp
#!/bin/bash
# Hace una comprobación de tiempo y elimina los archivos mas viejos
# al numero de dias del primer argumento que esten en la carpeta
# especificada como segundo argumento
Carpeta=$1
Tiempo=$2
find $Carpeta* -mtime +$Tiempo -exec rm {} \
exit 0
Ejercicio 4 == Situación == Imagine que se tiene una carpeta dentro de su directorio personal que cambia constantemente. Dentro esa carpeta hay archivos de mucha importancia de los cuales debe tener respaldos. Se tiene el siguiente script que se encarga de hacer una copia de seguridad y la guarda en dos diferentes directorios cada vez que se ejecuta. ################################################################## #!/bin/bash CARPETA_A_COPIAR=$HOME/Plantillas DESTINO_1=/var/tmp/ DESTINO_2=$HOME/.copia/ # Comprueba existencia if [ ! -d $CARPETA_A_COPIAR ] then echo "ERROR - No existe la carpeta origen $CARPETA_A_COPIAR " exit 1 fi # Comprueba carpetas destino if [ ! -d $DESTINO_1 ] || [ ! -d $DESTINO_2 ] then echo "ERROR - No existe al menos una carpeta destino " exit 1 fi # Se realiza la copia cp -rf $CARPETA_A_COPIAR $DESTINO_1 cp -rf $CARPETA_A_COPIAR $DESTINO_2 echo "Copias de seguridad realizadas" echo "en $DESTINO_1 y $DESTINO_2" exit 0 ################################################################## Un problema con el script anterior es que de no existir alguna de las carpetas destino no se ejecuta. El otro es que reemplaza las copias de seguridad que se hayan hecho antes, imagine que usted necesita las últimas 5 copias de seguridad por si ocurren cambios indeseables. == Ejercicio == Modifique el script anterior para que si no existe alguna de las carpetas destino crearlas y en ellas guardar las copias. Tambíen el script debe mantener las 5 últimas copias de seguridad dentro de ambas carpetas destino. Usted escoja como nombrar a las copias de seguridad pero recuerde que deben haber máximo 5 copias de la carpeta orgien dentre de cada una de las dos carpetas destino y estas deben ser las últimas 5 copias de seguridad. Esto significa, si el script se ejecuta 6 veces este debe eliminar la primera copia que es la más antigua, si se ejecuta 20 veces sólo debe mantener las 5 copias más nuevas.
sol.
#!/bin/bash
# Hace una copia de la carpeta Plantillas dentro de HOME
# otros directorios
CARPETA_A_COPIAR=$HOME/Plantillas
DESTINO_1=/var/tmp/
DESTINO_2=$HOME/.copia/
NUMERO_COPIAS=4 #el numero maximo de copias menos 1
NUM_ACTUAL_COPIAS=0
ARCHIVO_NUM_COPIAS="logc"
NOMBRE="copia"
# Comprueba existencia
if [ ! -d $CARPETA_A_COPIAR ]
then
echo "ERROR - No existe la carpeta origen $CARPETA_A_COPIAR "
exit 1
fi
# Comprueba carpetas destino
if [ ! -d $DESTINO_1 ]
then
mkdir $DESTINO_1
fi
if [ ! -d $DESTINO_2 ]
then
mkdir $DESTINO_2
fi
# Comprueba que exista archivo con el numero actual de copias
if [ -e "$DESTINO_1$ARCHIVO_NUM_COPIAS" ]
then
n=$(cat $DESTINO_1$ARCHIVO_NUM_COPIAS)
let "NUM_ACTUAL_COPIAS=$n"
echo "copia numero $NUM_ACTUAL_COPIAS"
else # el archivo aun no existe, se asume primera copia
echo "1" > $DESTINO_1$ARCHIVO_NUM_COPIAS
fi
# Controla que no se exceda el numero maximo de copias
if [ "$NUM_ACTUAL_COPIAS" -gt "$NUMERO_COPIAS" ]
then
num_eliminar=0
let "num_eliminar=$NUM_ACTUAL_COPIAS-$NUMERO_COPIAS"
echo "se eliminara $DESTINO_1$NOMBRE$num_eliminar"
if [ -d "$DESTINO_1$NOMBRE$num_eliminar" ]
then # elimina la carpeta mas antigua
rm -rf $DESTINO_1$NOMBRE$num_eliminar
rm -rf $DESTINO_2$NOMBRE$num_eliminar
echo "eliminada la copia $num_eliminar"
fi
fi
# Hace la carpeta de copia de seguridad y la nombra adecuadamente
n=$NUM_ACTUAL_COPIAS
let "n=$n+1"
echo "$n" > $DESTINO_1$ARCHIVO_NUM_COPIAS
echo "realizando copia numero $n"
# Se realiza las copias
cp -rf $CARPETA_A_COPIAR $DESTINO_1$NOMBRE$n
cp -rf $CARPETA_A_COPIAR $DESTINO_2$NOMBRE$n
echo "Copias de seguridad realizadas"
echo "en $DESTINO_1 y $DESTINO_2"
exit 0
Ejercicio 5 == Situacón == Imagine que en el sistema existen varios usuarios y usted quiere saber quienes son los que más espacio de almacenamiento utilizan en sus carpetas personales. == Ejercicio == Cree un script que registre en un archivo llamado "log_uso_home" en la carpeta /var/tmp/ , el tamaño de las carpetas /home de cada usuario cada que se ejecute sin borrar los datos anteriores. También en el archivo deberá indicar la fecha y hora de cada prueba. Ejemplo de salida: dom nov 16 21:47:28 BOT 2014 129M /home/rigoberto 1,2G /home/hilerio 1,5M /home/gustavo 16K /home/gilda 1,3M /home/marcelo 1,3G /home/ lun nov 17 21:47:28 BOT 2014 144M /home/rigoberto 2,4G /home/hilerio 1,5M /home/gustavo 16K /home/gilda 5,3M /home/marcelo 2,5G /home/ Nota.- Se asume que todas las carpetas personales están en /home/
sol.
#!/bin/bash
# Reporta el espacio que ocupa cada usuario en su carpeta
# personal habitual
ARCHIVO_LOG=/var/tmp/log_uso_home
ROOT_UID=0 # ID del usuario root
ERROR_NON_ROOT=67 # Para salir con error de no usuario root
# Asegura que el script se ejecuta como root
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "No es el usuario root no tiene permisos"
exit $ERROR_NON_ROOT
fi
cd /home/
{
date
du -h --max-depth 1
echo
} >> $ARCHIVO_LOG
exit 0