-->

sábado, 28 de noviembre de 2015

script para automatizar tareas (PARTE 1) - actualizar el sistema y guardar el history

Hola amigos como están, hoy vengo con este rollo de automatizar tareas que obvio es súper útil, para esta entretenida tarea vamos a ocupar cualquier editor de texto de su preferencia, y también vamos a ocupar cron que se utiliza para programar tareas en linux, obviamente vienen también software diseñado justamente para esta tarea pero para mi y por experiencia laboral siempre es mejor saber manipular cron porque raras veces tendrán en sus manos algún server con GUI, pero bueno esa es mi opinión personal, todo lo hice como root asique si ustedes no solo agregue sudo,pasemos directamente a mancharnos los dedos.

  1. El primer paso es crear una carpeta que contenga todos nuestros scripts asique la creamos donde queramos y le damos un nombre descriptivo:
  2. Ahora tenemos que crear nuestro primer script para eso hacemos:
  3. Luego debemos convertir dicho archivo a ejecutable:
  4. Llego el momento de empezar a modificar dicho archivo, yo voy a ocupar vim para editarlo:
  5. Primero debemos de saber que tiene que tener una estructura particular para poder funcionar y para esto indicamos 2 cosas una seria decirle que es un bash lo que estamos escribiendo y el tipo de codificación, aunque este último no llega a ser estricto pueden presentarse situaciones en las cuales se necesite este parámetro por ende siempre acostumbro a ponerlo:
  6. Pasamos a escribir el script:
  7. A no desesperarse porque es muy sencillo, la primer línea hace el update como si lo tipiaramos nosotros y con el signo ">" le indico que guarde la salida de la pantalla en un archivo llamado update.txt situado en el directorio tmp, la segunda línea estamos declarando una pequeña variable que en nuestro caso nos permite guardar en "fechahoy" la fecha de hoy en formate dia-mes-año osea si ustedes ponen en la terminal date +"%d-%m-%Y" se darán cuenta a que me refiero y el símbolo $ es parecido al uso que tiene en php osea nos ayuda a guardar todo ese string en la variable, en la tercera línea creo un archivo comprimido llamado backupsupdate.$fechahoy.tar.gz que con esa línea y la explicación de la línea 2 ya sea darán cuanta para que hacemos ese paso y obviamente le indicamos que archivo queremos comprimir osea le indicamos la ruta de update.txt, la cuarta línea simplemente copiamos el tar recién echo en una carpeta ya definida por mi para guardar de manera ordenada los backups (obviamente esas carpetas las tienen que crear primero jaja), la quinta borramos el tar osea borramos el que creamos en la tercer línea, en la sexta línea borramos el txt.
Ahora después de tener este script ya echo y entendido toca modificar cron para automatizar esta tarea, para esto editamos el siguiente archivo: Nos aparece algo como esto:

Les paso a explicar pero igual con solo leer ya se deben de imaginar como funciona crontab o cron, la clave de esto son los 5 primeros parámetros que a medida que sigamos dando ejemplos veremos variantes pero la base es que se debe de indicar primero los minutos, luego la hora, luego día del mes, numero del mes, y día de la semana segudi del usuario que ejecutara el comando o el script y segudo de dicho comando o directorio del scripts, para nuestro ejemplo:
"19 15 * * * root /home/hackendemoniado/Documentos/scripts/actualiza.sh"
creo que es bastante descriptivo lo único que falta aclarar es que los asteriscos "*" representan todos los valores osea algo que se repite siempre para todos los valores, yo lo diseñe para que se ejecute siempre a las 15 horas con 19 minutos, la parte comentada puede variar dependiendo la distribución (yo use fedora 23), ya con esto lo único que resta es guardar los cambio y revisar la carpeta donde dijimos que estará el backups, yo al poner el comando ls veo los siguiente:


Donde pueden ver que se creo a la hora que yo le especifique y con el formato con el dia mes y año como está programado en el script.

Luego pasamos a realizar algo parecido pero para resguardar todos nuestros comandos que vamos ocupando tanto para root como para algún usuario que nosotros queramos controlar:

  1. vamos a crear en total  3 scirpt asique como ya saben como hacer tiro directamente los comandos:
  2. Luego pasamos a modificar los archivos primero debemos saber que maejar el comando history con un script es diferente a lo anterior por ende no necesitamos las primeras 2 líneas para que ejecute bien, bueno realizamos el script para "guardahistory_hackendemoniado.sh":
  3. Hacemos lo mismo con el archivo "guardahistory_root.sh":
  4. Por último modificamos el script llamado "backups_history.sh":
  5. Es bastante parecido al script que hicimos primero, la única diferencia es que borramos cualquier archivo que empiece con history_ dentro de la carpeta tmp, osea "/tmp/history_*" hace justamente eso, ahora lo agregamos a cron:
  6. Como se darán cuenta el history de mi usuario lo represento como que lo ejecuto como mi nombre de usuario osea hackendemoniado y el de root con root, y los configuro a los 3 con esos horarios de ejecución para todos los días del año logicamente debemos de ejecutar en ese orden para que no falle asique cuidado con eso, ahora vemos con el comando ls -al como quedan los backups:
Bueno con esto quise empezar y hacer un buen hola mundo algo diferente y con cosas útiles para que todos les puedan dar uso, de igual manera ya voy a seguir haciendo script de este estilo con cosas distintas, se podrán imaginar la infinidad de cosas que se pueden hacer, por ejemplo instalar algún servidor y tener scripts preparados para instalar todo de una sin tener que tipiar todo, o configurar infinidad de servicios, backups redundantes, etc. es realmente infinitas las posibilidades solo es cuestión de organizarse y enfocarse en hacerlo bien para que ejecute el script y luego ya poder usarlo cuantas veces queramos, realmente es algo muy útil que todo el mundo que se dedica a trabajar como sysadmin o incluso programadores lo utilizan porque simplifica las tareas, aparte cuando uno se dedica a esto siempre busca ahorrar tiempo y con esto se logra efectivamente solo es cuestión de leer un poco y adaptarlo a nuestras circunstancias, espero que les sea de su agrado y cualquier cosa tengo todos mis script hechos de este post en: https://github.com/hackendemoniado/scripts 

bueno amigos cualquier cosa consulten y pronto estare subiendo más post....