Soy un principiante en bash scripting. Quiero crear un script bash para instalar, instalar y configurar cosas en mi caja de Linux de forma automatizada.
Supongamos que quiero editar
/etc/yum.repos.d/epel.repo
por el script bash
Lo que quiero hacer es lo siguiente
- Abra el archivo /etc/yum.repos.d/epel.repo
- Buscar la sección [epel]
- Agregue una prioridad de línea = 10 justo después de la línea habilitada = 1 en la sección de epel
Para la primera parte agregué
yum install nano
nano /etc/yum.repos.d/epel.repo
Mi pregunta es cómo hacer la segunda y tercera parte con el script bash usando nano (si es posible, en caso de que no sea posible, muéstrame con sed)
También en algunos puntos tendré que modificar variables en archivos. Por ejemplo
- habilitar = 0 para habilitar = 1
- Prueba = "1" a Prueba = "0"
- Añadir texto en una línea. funciones = a función = "texto1", "texto2"
- Agregue texto a un archivo y guárdelo (con nano)
Sé que es exigente, pero necesito crear esto para un amigo que es novato en la administración de servidores. Desafortunadamente, no tengo tiempo para estudiar scripts de bash desde el principio, ya que mis exámenes están cerca. Usaré sus ejemplos para escribir el script.
Chicos, gracias por todas las respuestas que he hecho con éxito la mayor parte del script bash
Sin embargo, tengo otro problema. Supongamos que quiero modificar nginx.conf usando sed. Trataremos con obrero_procesos.
Ahora quiero usar sed para hacer lo siguiente. 1.Encontrar la PRIMERA aparición de worker_processes
esa configuración y reemplazar el texto conworker_processes 4;
Nota especial aquí: este es solo un ejemplo. Puede suceder que la conf contenga trabajador_procesos 1; . Esta es una parte difícil. Quiero un comando sed que encuentre el primer caso de coincidencia de la palabra trabajador_procesos , elimine la línea de texto donde se encuentra la palabra y pegue worker_processes 4;
allí y luego guarde el archivo. Este es el método más confiable que pensé al editar archivos (sin ningún riesgo de romper cualquier conf
Una última sugerencia que utilicé sed -i 's / enabled = 0 / enabled = 1 / g' /etc/yum.repos.d/remi.repo para cambiar enabled = 0 a enabled = 1 en la sección [remi] en remi .repo. Sin embargo, tengo la sensación de que puede modificar todo habilitado = 0 en ese archivo, lo que dañará el servidor. ¿Alguien puede sugerir un código mejor?
Otra cosa de la que no estoy seguro: PI quiere editar un archivo que tiene esto como Prueba de texto = "0" (Sí, tiene comillas y necesito mantenerlo) Debe modificarse de Prueba = "0" a Prueba = " 1 "(con comillas)
También necesito agregar algo de texto con comillas al final de un archivo con sed Como "Gracias Quanta" (con comillas) Para php pones un \ con comillas de eco, no sé cómo se hace para bash
Otra cosa
que necesito para modificar una línea en una conf pero no recuerdo cuál es el texto completo para reemplazar
Al igual que su escuchar = algo; , quiero modificarlo para escuchar = /tmp/php5-fpm.sock;
Un gran aprobado para quanta
Gracias por el increíble apoyo chicos
-i
No es una opción estándar parased
.ed
, sin embargo, ofrece una forma compatible con los estándares para editar archivos con una sintaxis muy similar a la de sed.Como dijo ptman, Augeas puede salvarte del uso de
sed
/awk
:establecerá la prioridad del
epel
repositorio en 10. Si lapriority
clave ya existe, establecerá su valor; de lo contrario, agregará unapriority
entrada después de la última entrada en la sección.Lo mismo ocurre con otros valores que tal vez desee modificar.
Si desea modificar varios valores, incluso puede usarlo
augtool
como intérprete:Si desea mantenerlo en su script bash, puede canalizar los comandos en
augtool
:Ver
man augtool
para más opciones.Hay varias ventajas para usar Augeas vs
sed
/awk
:yum.repo
sintaxis). No correrá el riesgo de romper la sintaxis del archivo si su expresión regular es incorrecta;yum.repo
secciones, por lo que sabe que está editando la sección correcta;fuente
También es posible que desee consultar Augeas , herramienta para modificar mediante programación los archivos de configuración. Es muy potente en combinación con Puppet (un sistema de gestión de configuración), pero también se puede usar solo.
fuente