Categorías: ProgramaciónSeguridad

Sed, un potente editor de secuencias, con soporte de expresiones regulares

Ayer necesitaba unos cambios en todos los ficheros de lista blanca para hosts con IP dinámica (conexión 3G/4G, salidas fuera de la oficina…) y la verdad si la ayuda sed, un potente mini-editor, sería un caos actualizar 100 máquinas virtuales y sus hosts anfitriones. Así que se me ha ocurrido crear este articulo, donde ire añadiendo secuencias de este potente editor que nos pueden salvar de horas de trabajo.

Añadir con sed una linea si no encuentra un resultado de un valor de configuración

Tenia que añadir una variable de configuración, que en algunos casos existía y en otro no, al fichero de configuración de mi firewall CSF, con un formato VAR = «value», haciendo uso de && (AND) y || (OR), y encontré este tip, How to add a line in sed if not match is found

grep -q '^VAR' /path/file && sed -i 's/^VAR.*/VAR = "valor"/' /path/file || echo 'VAR = "valor"' >> /path/file

Añadir con grep una linea si no encuentra el resultado

En mi caso también tenía que añadir dos nombres  de host al fichero de lista blanca dinámico. Pero algunos de mis servicios, ya tenían esas lineas así que necesitaba verificar primero, si existía la cadena, para no duplicar lineas. Así que adapte,

grep -q 'cadena' /path/file || echo 'cadena' >> /path/file

Modificación masiva

En un fichero de texto (servidores.txt) tengo la lista de mis servidores, y de esta forma es mas sencillo hacer los cambios en todos ellos.

for s in $(cat servidores.txt); do echo "Servidor $s"; sshno -p24 root@$s "grep -q '^VAR' /path/file && sed -i 's/^VAR.*/VAR = "valor"/' /path/file || echo 'VAR = "valor"' >> /path/file"; done

sshno es una alias que tengo, para conexiones en las que no quiero verificar de forma estricta la conexión ssh, de forma que pueda trabajar de forma desatendida, por si aun no me conecte a ese host guardando las llaves de conexión.

alias sshno='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

Imagen Designed by Freepik y adaptada por Abdelkarim Mateos

Comparte este artículo

Artículo Antiguo
Este artículo tiene más de 2 años. Es muy probable que su contenido este anticuado, aunque pueda ser de utilidad, es conveniente que revises otras informaciones al respecto. Si lo encuentras útil o crees que puede ser actualizado, deja tu comentario con la actualización para poder editarlo y que pueda ser útil a los demás.

Comparte este articulo en

Abkrim

Yo solo se que no se nada, y que me paso la vida aprendiendo

Entradas recientes

Youtube – Mod Security en DirectAdmin. Conocerlo y gestionarlo en el panel de control DirectAdmin.

¡Hola a todos! Vamos a sumergirnos en el fascinante mundo de Mod Security y aprender…

3 meses hace

Apertura del canal Youtube, Tecno Boomer, dedicado al mundo del hosting

Ya son muchos años en el sector, muchos años pasando por varios paneles de control,…

3 meses hace

El Uso de la Lista UCEPROTECT en los Niveles 2 y 3: Una Falacia de Causa Cuestionable

La lista UCEPROTECT es una herramienta utilizada por muchos administradores de sistemas y proveedores de…

5 meses hace

Fatal error: Allowed memory size of 268435456 bytes exhausted en WordPress. Otro post más… pero diferente

No es la primera vez que me encuentro con el agotamiento de la memoria en…

11 meses hace

Problemas de Acceso con Centos 7, Almalinux 8, Ubuntu 20.04, y Debian 10/11: Un Enigma Firewall CSF

Descubre cómo solucionar problemas de acceso a servidores con Centos 7, Almalinux 8, Ubuntu 20.04…

1 año hace

MySQL no inicia debido a errores en la base de datos interna de MySQL

Uno de los mensajes más alarmantes que puedes encontrarte es aquel que indica que tu…

1 año hace