Para tener éxito, la planificación sola es insuficiente. Uno debe improvisar también…
Una de las herramientas básicas que se deben manejar diriamente es el scripting, en cualquier lenguaje, nos ayudará a realizar de una manera más automatizada nuestra administración.
En este rubro existen miles de recursos en línea que nos pueden apoyar a realizar diferentes actividades conforme nuestras necesidades. Aún con esto, la única forma de poder desarrollar esta habilidad es la práctica.
En esta ocasión, quiero compartirles algunos de los recursos que utilizo para satisfacer alguna necesidad al crear un script:
- Bash Scripting de Supervivencia – Curso básico de scripting en bash, que nos lleva a crear scripts básicos hasta algunos de complejidad media
- Advanced Bash-Scripting Guide – Guía que explora más a fondo el arte del scripting, con muchos ejemplos específicos
- Perl for System Administration – Libro de O’Reilly sobre el uso de Perl en tareas específicas de administración
- Advanced Awk for Sysadmins – Reportaje de Linux For You que nos enseña algunas funciones avanzadas de AWK
Además de estos recursos, las redes sociales también nos ofrecen algunos recursos por demás recomendables:
- @UnixToolTip – Diariamente nos porporciona tips sobre el manejo de herramientas útiles para la administración
- @RegExTip – Tips semanales de como poder utilizar más eficientemente las expresiones regulares
- @climagic – Trucos para la línea de comandos en140 caracteres
- @commandlinefu – Como utilizar diferentes comandos que pueden usarse para automatizar tareas
- @GeekScripting – Comparten scripts para simplificar el trabajo en la terminal
- @bashoneliners – Scripts en una sola línea de comando
En este último, compartí un bash one-liner que utilizo para monitorear y llevar el registro de los archivos recibidos vía vsftp, así como su existencia para ser procesados por otra aplicación:
for i in $(cat /var/log/vsftpd.log | grep $DATE_TIME | grep UPLOAD | grep OK); do ls /FTP/HOME/$i >> /dev/null 2> &1; if [ $? = 0 ]; then echo "$i" >> $FILES_OK_UPLOADS.log; else echo "$DATE ERROR: File $i not found" >> $FTP_FILES_NOTOK_$DATE_TIME.log; fi; done
Aquí la liga de este one-liner.
Además, les comparto 2 libros que uso como referencia básica en todos mis scripts:
- Wiley – Linux Command Line and Shell Scripting Bible (2008)
- Wicked Cool Shell Scripts – 101 Scripts for Linux, Mac OS X, and Unix Systems
Bonus
Script en Python que nos ayuda a determinar cuanta RAM esta siendo utilizada por cada programa, por ejemplo:
[root@ragnarok ~]# python /var/tmp/tools/ps_mem.py Private + Shared = RAM used Program 116.0 KiB + 24.0 KiB = 140.0 KiB acpid 124.0 KiB + 16.0 KiB = 140.0 KiB hidd 140.0 KiB + 18.5 KiB = 158.5 KiB vmstat 148.0 KiB + 15.5 KiB = 163.5 KiB hobbitlaunch 156.0 KiB + 16.5 KiB = 172.5 KiB irqbalance 140.0 KiB + 33.5 KiB = 173.5 KiB pam_timestamp_check 156.0 KiB + 26.5 KiB = 182.5 KiB portmap 152.0 KiB + 36.0 KiB = 188.0 KiB init 172.0 KiB + 27.5 KiB = 199.5 KiB atd 176.0 KiB + 30.5 KiB = 206.5 KiB gnome-keyring-daemon [updated] 192.0 KiB + 34.0 KiB = 226.0 KiB rpc.statd 248.0 KiB + 24.5 KiB = 272.5 KiB smartd 252.0 KiB + 23.0 KiB = 275.0 KiB audispd 176.0 KiB + 140.5 KiB = 316.5 KiB sh 248.0 KiB + 82.0 KiB = 330.0 KiB hald-addon-keyboard(2) 352.0 KiB + 30.5 KiB = 382.5 KiB auditd 352.0 KiB + 39.5 KiB = 391.5 KiB xinetd 444.0 KiB + 43.0 KiB = 487.0 KiB vsftpd 360.0 KiB + 166.5 KiB = 526.5 KiB su 512.0 KiB + 59.0 KiB = 571.0 KiB sudo 536.0 KiB + 59.5 KiB = 595.5 KiB rpc.idmapd 612.0 KiB + 35.0 KiB = 647.0 KiB crond 876.0 KiB + 22.0 KiB = 898.0 KiB udevd 908.0 KiB + 327.5 KiB = 1.2 MiB dbus-daemon (3) 1.1 MiB + 188.5 KiB = 1.3 MiB bonobo-activation-server [updated] 924.0 KiB + 473.0 KiB = 1.4 MiB bash (2) 932.0 KiB + 1.2 MiB = 2.1 MiB gdm-binary (2) 1.8 MiB + 609.5 KiB = 2.4 MiB gdm-rh-security-token-helper 1.8 MiB + 662.0 KiB = 2.4 MiB notification-area-applet [updated] 2.2 MiB + 251.5 KiB = 2.4 MiB issDaemon 2.4 MiB + 661.0 KiB = 3.0 MiB gnome-settings-daemon [updated] 2.7 MiB + 387.0 KiB = 3.1 MiB sendmail.sendmail (2) 2.7 MiB + 364.0 KiB = 3.1 MiB ntpd 2.6 MiB + 513.0 KiB = 3.1 MiB gnome-power-manager 4.7 MiB + 325.5 KiB = 5.0 MiB Xorg 5.6 MiB + 360.0 KiB = 5.9 MiB hpssd.py 6.2 MiB + 58.5 KiB = 6.3 MiB perl [updated] 4.7 MiB + 5.8 MiB = 10.5 MiB iss-lum (2) 15.7 MiB + 477.0 KiB = 16.1 MiB yum-updatesd 16.0 MiB + 897.0 KiB = 16.9 MiB gdmgreeter 14.6 MiB + 4.9 MiB = 19.5 MiB sshd (31) 28.6 MiB + 2.8 MiB = 31.4 MiB iss-spa (2) 34.5 MiB + 1.1 MiB = 35.6 MiB issCSF 208.6 MiB + 4.3 MiB = 212.9 MiB postgres (8) 397.9 MiB + 596.5 KiB = 398.5 MiB java --------------------------------- 791.7 MiB ================================= [root@ragnarok ~]#
Aquí el código.
Espero les sirva…
[…] mencionaba en un post anterior y fiel a Las Tres Leyes del SysAdmin, hay que explotar las capacidades de scripting para […]