
Los archivos de configuración de Linux suelen ser de texto plano, lo que los hace fáciles de editar utilizando herramientas de línea de comandos. Los más poderosos de ellos son sed y vergüenza.
Si bien los principiantes pueden confiar en la edición manual de VI o Nano, los administradores de sistemas experimentados a menudo recurren a estas herramientas para analizar y reescribir automáticamente los archivos de configuración.
Estas herramientas le permiten hacer coincidir los patrones, extraer campos e incluso realizar cambios en tiempo real en archivos de configuración desde líneas de comando o scripts.
En este artículo, exploraremos cómo usarlo sed y awk Leer, analizar y reescribir archivos de configuración de manera eficiente. Introduciremos ejemplos prácticos que pueden ayudar a automatizar tareas tediosas, como actualizar las direcciones IP, cambiar los parámetros o extraer valores.
Comencemos con un ejemplo simple: sed.
Ejemplo 1: Actualizar parámetros usando el comando SED
Supongamos que desea actualizar ListenPort Directivas en los archivos de configuración, p. /etc/ssh/sshd_configpuedes hacer esto:
sed -i 's/^#\?ListenPort.*/ListenPort 2222/' /etc/ssh/sshd_config
Esto es lo que hace:
-iDecirsedEdite el archivo en persona.^#\?Líneas de coincidencia que pueden comenzar con comentarios o no comenzar (#).ListenPort.*Haga coincidir el resto de la línea, ya sea un valor predeterminado o un valor personalizado.- Toda la fila se reemplaza
ListenPort 2222.
El método confirma que incluso si la directiva se comenta o se ha establecido en otro valor, se actualizará limpiamente.
Ejemplo 2: extraer valores con el comando AWK
Para extraer un valor específico del archivo de configuración, awk Es una excelente opción. Por ejemplo, si quieres buscar PermitRootLogin Directivas de los archivos de configuración SSH, utilizando:
awk '$1 == "PermitRootLogin" { print $2 }' /etc/ssh/sshd_config
Esto es lo que hace:
$1 == "PermitRootLogin"Coincidir con la fila del primer campoPermitRootLogin.{ print $2 }Imprime el segundo campo, que es el valor real asignado a la Directiva.
Este comando escanea el archivo para cualquier línea que comience con PermitRootLogin e imprima el valor correspondiente, generalmente yes,,,,, noo prohibit-password.
Ejemplo 3: use el comando SED para eliminar la línea de parámetros
Por ejemplo, si necesita eliminar cualquier fila que comience con UseDNS existir /etc/ssh/sshd_config Archivos que puede usar de manera rápida y eficiente sed Orden.
sed -i '/^UseDNS/d' /etc/ssh/sshd_config
Qué está sucediendo:
^UseDNSMatch Lines que comienzan de manera usada.- este
dComando indicarsedEliminar estas líneas. - este
-iLos indicadores aplican cambios directamente al archivo.
Esto es útil cuando hay configuraciones sin poder o no deseadas en múltiples ubicaciones y desea que se elimine.
Ejemplo 4: Genere un informe usando el comando AWK
Suponga que tiene un archivo de configuración personalizado que enumera el estado del servicio, por ejemplo:
apache2 running mysql stopped nginx running ssh running
Puede usar AWK para generar rápidamente un resumen de todos los servicios que se ejecutan actualmente.
awk '$2 == "running" { print $1 }' /etc/myapp/services.conf
Esto es lo que hace:
$2 == "running"Coincidir con la fila del segundo campocorrer«.{ print $1 }Nombre del servicio de salida.
Esto solo produce una lista de servicios actualmente en ejecución. Puede extender esta información agregando contadores o guardando la salida en un archivo de registro para monitorear los scripts.
Ejemplo 5: inserte una línea antes o después de usar SED
Si necesita agregar una nueva línea después de una directiva específica en el archivo de configuración, use sed Como esto:
sed -i '/^PermitRootLogin/a Banner /etc/issue.net' /etc/ssh/sshd_config
Esto es lo que hace:
/^PermitRootLogin/Coincidir con las filas incluidasPermitRootLogin.aAgregue rutas después del juego.- Bandera
/etc/issue.netes la línea insertada.
Esto es útil cuando desea guardar opciones de configuración relevantes juntas.
Bonificación: Combine el guión incómodo y sede en el script de concha
Los usuarios avanzados incluso pueden combinar awk y sed Automatice las tareas de configuración de lotes en scripts bash. Por ejemplo, analiza todo .conf Archivos en directorios y reescribir parámetros específicos en cada archivo; por ejemplo, actualizar directivas similares MaxConnections Hay un nuevo valor.
Aquí hay un script simple que hace esto:
#!/bin/bash
# Define the new value for the parameter
NEW_VALUE=500
# Loop through all .conf files in /etc/myapp/
for file in /etc/myapp/*.conf; do
# Check if the file contains the MaxConnections directive
if awk '$1 == "MaxConnections"' "$file" > /dev/null; then
# Use sed to replace the existing value
sed -i 's/^MaxConnections.*/MaxConnections '"$NEW_VALUE"'/' "$file"
echo "Updated MaxConnections in $file"
else
# If the directive doesn't exist, append it to the end
echo "MaxConnections $NEW_VALUE" >> "$file"
echo "Added MaxConnections to $file"
fi
done
Esto es lo que hace este script:
NEW_VALUEMantenga valores de parámetros actualizados.- Se vuelve a hacer
.confArchivos en archivos/etc/myapp/Tabla de contenido. awkCompruebe si el comando esMaxConnectionsYa existe.- Si existe
sedActualizar el valor en su lugar. - Si no, agregue la directiva al final del archivo.
Este tipo de script es útil para administrar múltiples archivos de configuración que requieren actualizaciones consistentes sin editar manualmente cada script.
Resumir
Ambos sed y awk Es una herramienta indispensable para el sistema de administración de administradores de Linux. Al dominarlos, puede evitar la edición manual duplicada y asegurarse de que sus cambios de configuración sean confiables y repetibles.







![[Fixed] Problema "Clave almacenada en el conjunto de claves de trusted.gpg heredado"](https://muylinux.xyz/wp-content/uploads/2022/11/Fixed-Problema-Clave-almacenada-en-el-conjunto-de-claves-de-220x150.png)

