Warning: Undefined variable $menu_width in /home/sdove/public_html/wp-content/themes/vw-hosting-services-pro/template-parts/header/content-header.php on line 122
Permisos en Linux: Guía Completa sobre Permisos Numéricos
Los permisos en un sistema operativo Linux son una característica fundamental que garantiza la seguridad y la privacidad de los archivos y directorios. Es crucial comprender cómo funcionan estos permisos para poder gestionar eficazmente quién puede acceder, leer o modificar los diferentes elementos de un sistema basado en Linux. En este artículo, exploraremos detalladamente cómo entender los permisos en Linux y los permisos numéricos paso a paso en español.
¿Qué son los Permisos en Linux?
En el contexto de Linux, los permisos se refieren a la configuración que dicta qué acciones pueden realizar los usuarios en un archivo o directorio específico. Hay tres tipos principales de permisos en Linux: lectura (r), escritura (w) y ejecución (x). Cada archivo o directorio en un sistema Linux tiene atribuidos estos permisos para el propietario, el grupo al que pertenece y otros usuarios.
Permisos Numéricos en Linux
Además de los permisos tradicionales en formato de texto, en Linux también se utilizan permisos numéricos para representar las combinaciones de permisos. Los permisos numéricos asignan un valor numérico a cada tipo de permiso (lectura, escritura, ejecución) y luego combinan estos valores para formar un código de permisos de tres dígitos.
¿Cómo Interpretar los Permisos Numéricos?
Para entender adecuadamente los permisos numéricos en Linux, es crucial saber que cada dígito en el código de permisos representa un conjunto específico de permisos. El primer dígito se refiere al propietario del archivo, el segundo al grupo y el tercero a otros usuarios.
Por ejemplo, un archivo con permisos “754” significa lo siguiente:
El propietario tiene permisos de lectura, escritura y ejecución (7)
Los miembros del grupo tienen permisos de lectura y ejecución (5)
Los otros usuarios tienen solo permiso de ejecución (4)
Pasos para Cambiar los Permisos en Linux
Paso 1: Verificar los Permisos Actuales
Antes de cambiar los permisos de un archivo o directorio en Linux, es importante verificar los permisos actuales. Esto se puede hacer mediante el comando ls -l.
Paso 2: Identificar el Propietario y el Grupo
Es esencial conocer quién es el propietario del archivo o directorio en cuestión y a qué grupo pertenece.
Paso 3: Cambiar los Permisos
Para cambiar los permisos de un archivo en Linux, se utiliza el comando chmod. Por ejemplo, para otorgar permisos de lectura, escritura y ejecución al propietario de un archivo, se puede usar chmod 700 nombre_archivo.
Paso 4: Verificar los Cambios
Después de modificar los permisos, es recomendable verificar que los cambios se hayan aplicado correctamente utilizando nuevamente el comando ls -l.
Conclusión
En resumen, comprender los permisos en un sistema operativo Linux y cómo utilizar los permisos numéricos es esencial para garantizar la seguridad y la integridad de los archivos y directorios. Al seguir los pasos mencionados y familiarizarse con los conceptos fundamentales de los permisos en Linux, los usuarios pueden gestionar de manera efectiva quién puede acceder y modificar la información en su sistema. ¡Explora y practica estos conceptos para expandir tu conocimiento en el mundo de Linux!
En la era digital en que vivimos, la comunicación eficiente es clave, y contar con un sistema telefónico confiable es fundamental para empresas y organizaciones. Asterisk y FreePBX son dos herramientas poderosas y de código libre que permiten crear una central telefónica IP robusta y personalizable en sistemas operativos como Ubuntu. En esta guía paso a paso, aprenderás cómo instalar Asterisk y FreePBX en un servidor Ubuntu, proporcionando así una solución de comunicación flexible y económica para tu empresa.
Preparación del Entorno
Para comenzar con la instalación de Asterisk y FreePBX en Ubuntu, es importante asegurarse de que el sistema esté actualizado. Abre una terminal y ejecuta el siguiente comando para actualizar el sistema:
sudo apt update && sudo apt upgrade
Una vez que el sistema esté actualizado, procede a instalar los paquetes necesarios para Asterisk y FreePBX.
Instalación de Asterisk
Asterisk es un software de PBX de código abierto que proporciona funcionalidades avanzadas para la gestión de llamadas. Para instalar Asterisk en Ubuntu, sigue estos pasos:
Abre la terminal y ejecuta el siguiente comando para instalar las dependencias necesarias:
Descomprime el archivo descargado y accede al directorio de FreePBX:
tar -xvzf freepbx-15.0-latest.tgz
cd freepbx
Ejecuta el script de instalación de FreePBX con el comando:
sudo ./install
Sigue las instrucciones que aparecen en pantalla para completar la instalación. Una vez finalizado el proceso, tendrás Asterisk y FreePBX instalados y listos para ser configurados según tus necesidades.
Configuración y Uso de Asterisk y FreePBX
Con Asterisk y FreePBX instalados en tu servidor Ubuntu, puedes comenzar a configurar tu central telefónica IP. Accede a la interfaz web de FreePBX utilizando tu navegador y sigue los pasos para configurar extensiones, troncales, opciones de enrutamiento de llamadas y otras configuraciones avanzadas.
En resumen, la instalación de Asterisk y FreePBX en Ubuntu te brinda la flexibilidad y el control necesarios para gestionar eficazmente las comunicaciones de tu empresa. Desde funciones básicas de manejo de llamadas hasta opciones avanzadas de enrutamiento y administración, esta combinación de herramientas de código abierto te permite crear una central telefónica personalizada y escalable.
En conclusión, Asterisk y FreePBX en Ubuntu son la solución ideal para empresas que buscan una central telefónica IP potente y adaptable. Con esta guía paso a paso, podrás instalar y configurar estas herramientas de manera sencilla y eficiente, proporcionando a tu empresa una infraestructura de comunicación moderna y eficaz. ¡Aprovecha al máximo estas poderosas herramientas y lleva la comunicación de tu empresa al siguiente nivel!
Cómo migrar de CentOS 8 a AlmaLinux 8 paso a paso en español
La migración de un sistema operativo a otro puede ser un proceso desafiante pero necesario para mantener la seguridad y el rendimiento de tu infraestructura informática. Con el reciente anuncio de Red Hat de terminar el soporte para CentOS 8 y la llegada de AlmaLinux como la alternativa respaldada por la comunidad, muchos usuarios están considerando migrar de CentOS 8 a AlmaLinux 8. En esta guía paso a paso en español, te proporcionaremos las instrucciones necesarias para llevar a cabo esta transición de forma segura y eficiente.
Antes de comenzar: Realizar una copia de seguridad
Antes de proceder con la migración, es fundamental realizar una copia de seguridad completa de todos tus datos y configuraciones importantes. Esto te ayudará a evitar la pérdida de información en caso de que surja algún problema durante el proceso de migración. Puedes utilizar herramientas de respaldo integradas en CentOS 8 o soluciones de terceros para crear una copia de seguridad de tus archivos críticos.
Paso 1: Preparar el entorno
Para migrar de CentOS 8 a AlmaLinux 8, es importante preparar el entorno adecuadamente. Asegúrate de tener acceso a una conexión a internet estable y suficiente espacio en disco para la instalación de AlmaLinux. Además, asegúrate de que tu sistema esté completamente actualizado ejecutando el comando:
sudo dnf update
Esto garantizará que tu sistema esté al día con las últimas actualizaciones y parches de seguridad antes de iniciar el proceso de migración.
Paso 2: Descargar AlmaLinux 8
El siguiente paso consiste en descargar la imagen de instalación de AlmaLinux 8. Puedes obtener la ISO de AlmaLinux desde el sitio web oficial de AlmaLinux. Una vez que hayas descargado la imagen, puedes grabarla en un USB o DVD para su instalación.
Paso 3: Realizar la instalación de AlmaLinux 8
Una vez que hayas preparado la imagen de instalación de AlmaLinux, reinicia tu sistema e inicia desde el medio de instalación que has creado. Sigue las instrucciones en pantalla para seleccionar el idioma, la zona horaria, el disco de instalación y otras configuraciones específicas de tu entorno.
Durante el proceso de instalación, se te pedirá que elijas el tipo de instalación que deseas realizar. Selecciona la opción de “Migrar desde CentOS” para que el instalador detecte la instalación existente de CentOS 8 y realice la migración de forma automática.
Paso 4: Configurar AlmaLinux 8
Una vez que la instalación se haya completado, reinicia tu sistema y accede a tu nuevo entorno AlmaLinux 8. Es posible que tengas que realizar algunas configuraciones adicionales, como instalar controladores de dispositivos específicos o ajustar la configuración de red y servicios. Asegúrate de seguir las mejores prácticas de seguridad y configuración recomendadas por AlmaLinux para optimizar el rendimiento y la estabilidad de tu sistema.
Conclusión
La migración de CentOS 8 a AlmaLinux 8 puede ser un proceso sencillo y sin complicaciones si se sigue cuidadosamente el proceso descrito anteriormente. Al migrar a AlmaLinux, no solo estarás garantizando un soporte continuo y actualizaciones de seguridad para tu sistema, sino que también estarás contribuyendo a la comunidad open source que respalda este proyecto.
Recuerda siempre realizar una copia de seguridad de tus datos antes de realizar cualquier migración o actualización importante en tu sistema. Si encuentras algún problema durante el proceso de migración, no dudes en consultar la documentación oficial de AlmaLinux o buscar ayuda en los foros de la comunidad para recibir asistencia adicional.
En resumen, migrar de CentOS 8 a AlmaLinux 8 te permitirá mantener la estabilidad y el rendimiento de tu infraestructura informática a largo plazo, asegurando que tu sistema esté protegido contra vulnerabilidades y amenazas de seguridad. ¡No esperes más y realiza la transición a AlmaLinux siguiendo estos sencillos pasos!
Instalación del Servidor y Agente Zabbix en Ubuntu 24.04
En este tutorial, te guiaré a través de los pasos necesarios para instalar el servidor Zabbix y el agente en Ubuntu 24.04. Zabbix es una solución de monitoreo de código abierto que permite supervisar el estado de varios servicios de red, servidores y hardware de red.
Prerequisitos
Antes de comenzar, asegúrate de tener acceso a una máquina con Ubuntu 24.04 y privilegios de superusuario.
Actualiza tu sistema
sudo apt update
sudo apt upgrade -y
Paso 1: Instalación del Servidor Zabbix
Agregar el repositorio de Zabbix
Primero, necesitas agregar el repositorio oficial de Zabbix a tu sistema:
A continuación, crea la base de datos y el usuario para Zabbix:
sudo mysql -uroot -p
Dentro del cliente MySQL, ejecuta los siguientes comandos:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'tu_contraseña'; GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost'; FLUSH PRIVILEGES; EXIT;
Importar el esquema de la base de datos de Zabbix
Importa las tablas predeterminadas:
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Configurar el servidor Zabbix
Edita el archivo de configuración de Zabbix:
sudo nano /etc/zabbix/zabbix_server.conf
Asegúrate de ajustar las siguientes líneas:
DBPassword=tu_contraseña
Iniciar los servicios de Zabbix
Finalmente, habilita e inicia el servidor Zabbix y el agente:
Sigue las instrucciones en pantalla para completar la configuración de la interfaz web.
Conclusión
Ahora tienes un servidor Zabbix y un agente funcionando en Ubuntu 24.04. Asegúrate de ajustar cualquier configuración adicional que necesites y comienza a monitorear tus servicios de forma eficiente.
Control Web Panel (CWP) es una herramienta que permite gestionar servidores web fácilmente. A continuación, se describen los pasos para instalar CWP en AlmaLinux 8.
Requisitos Previos
Servidor dedicado o VPS: Se requiere un servidor limpio (sin controladores instalados).
Acceso root: Asegúrate de tener acceso a la terminal como root.
AlmaLinux 8: Verifica que tu sistema operativo sea AlmaLinux 8.
Pasos de Instalación
1. Actualizar el Sistema
Antes de empezar la instalación, es recomendable actualizar el sistema. Ejecuta los siguientes comandos:
dnf update -y
2. Instalar las Dependencias Necesarias
CWP requiere algunas dependencias para funcionar correctamente:
dnf install -y wget curl perl nano
3. Descargar el Script de Instalación de CWP
Utiliza wget para descargar el script de instalación de CWP:
cd /usr/local/src
wget http://goo.gl/CWPKG
4. Dar Permisos de Ejecución al Script
Asegúrate de que el script sea ejecutable:
chmod +x CWPKG
5. Ejecutar el Script de Instalación
Ahora, ejecuta el script de instalación:
bash CWPKG
La instalación puede tardar entre 30 a 60 minutos. Durante el proceso, el script descargará e instalará todos los paquetes necesarios.
6. Configuración Inicial
Una vez que la instalación esté completa, podrás acceder al panel de control de CWP a través de tu navegador web.
Visita:
http://tu_direccion_ip:2030
Utiliza las siguientes credenciales para iniciar sesión:
Usuario: root
Contraseña: la contraseña de tu root del sistema
7. Configuración de Firewall
Asegúrate de permitir el tráfico a los puertos necesarios en tu firewall:
Una vez dentro de CWP, sigue el asistente de configuración para configurar aspectos como DNS, base de datos y otros servicios.
Conclusión
Ahora has instalado Control Web Panel en tu servidor AlmaLinux 8. Este panel te proporcionará una interfaz gráfica para gestionar diferentes servicios en tu servidor. Asegúrate de seguir las mejores prácticas de seguridad y mantenimiento para mantener tu servidor funcionando de manera óptima.
La instalación de Maldet (Linux Malware Detect) y ClamAV en Ubuntu 24.04 puede ayudar a proteger tu servidor de malware y virus. A continuación, te presento un tutorial paso a paso para realizar esta instalación.
Paso 1: Actualizar el Sistema
Antes de comenzar, es recomendable asegurarte de que tu sistema esté completamente actualizado. Abre la terminal y ejecuta los siguientes comandos:
sudo apt update
sudo apt upgrade -y
Paso 2: Instalar ClamAV
ClamAV es un antivirus de código abierto “para Linux”. Para instalarlo, ejecuta:
sudo apt install clamav clamtk -y
Paso 2.1: Actualizar la Base de Datos de ClamAV
Una vez instalado ClamAV, debes actualizar su base de datos. Puedes hacerlo con el siguiente comando:
sudo freshclam
Paso 3: Instalar Maldet
Para instalar Maldet, primero necesitas descargarlo. Ejecuta los siguientes comandos en la terminal:
cd /usr/local/src
sudo wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
sudo tar -xvzf maldetect-current.tar.gz
cd maldetect-*
sudo ./install.sh
Paso 4: Configurar Maldet
Una vez instalado, es recomendable configurar Maldet. Abre su archivo de configuración:
sudo nano /usr/local/maldetect/conf.maldet
En este archivo, puedes ajustar varias configuraciones, como notificaciones por correo electrónico y programación de análisis. Asegúrate de guardar los cambios antes de salir del editor.
Paso 5: Ejecutar un Escaneo
Para ejecutar un escaneo con Maldet, puedes usar el siguiente comando:
sudo maldet --scan-all /
Este comando escaneará todo tu sistema en busca de malware.
Paso 6: Revisar los Resultados
Después de que el escaneo haya finalizado, revisa los resultados con:
sudo maldet --report
Paso 7: Actualizar Maldet
Para asegurarte de que Maldet se mantenga actualizado, puedes usar el siguiente comando:
sudo maldet --update
Conclusión
Siguiendo estos pasos, habrás instalado y configurado Maldet y ClamAV en Ubuntu 24.04. Es recomendable realizar escaneos periódicos para mantener tu servidor protegido de amenazas.
Lynis es una herramienta de auditoría de seguridad para sistemas basados en Unix. A continuación, te mostramos cómo instalarla en Ubuntu 24.04.
Paso 1: Actualizar el Sistema
Antes de instalar cualquier nuevo software, es importante asegurarse de que el sistema esté actualizado. Abre la terminal y ejecuta:
sudo apt update && sudo apt upgrade -y
Paso 2: Instalar Dependencias Necesarias
Lynis puede requerir algunas dependencias. Instálalas utilizando el siguiente comando:
sudo apt install git -y
Paso 3: Descargar Lynis
Descarga el repositorio de Lynis directamente desde GitHub. Ejecuta los siguientes comandos:
cd /opt
sudo git clone https://github.com/CISOfy/lynis.git
Paso 4: Ejecutar Lynis
Una vez descargado Lynis, puedes ejecutar la auditoría con el siguiente comando:
sudo /opt/lynis/lynis audit system
Paso 5: Revisar los Resultados
Después de ejecutar Lynis, revisa los resultados que se mostrarán en la consola. Lynis te proporcionará un informe detallado sobre la seguridad de tu sistema y recomendaciones para mejorarla.
Paso 6: Actualizar Lynis
Es recomendable mantener Lynis actualizado. Para ello, dirígete al directorio de Lynis y ejecuta el siguiente comando para obtener la última versión:
cd /opt/lynis
sudo git pull
Conclusión
Con estos pasos, Lynis estará instalado y funcionando en tu sistema Ubuntu 24.04. Realiza auditorías periódicas para mantener la seguridad de tu sistema.
Un contenedor Linux es un conjunto de procesos independiente del resto del sistema. Para el usuario final, un contenedor Linux funciona como una máquina virtual, pero es mucho más ligero. No tiene la sobrecarga de ejecutar un kernel Linux adicional y los contenedores no requieren compatibilidad con la virtualización de hardware de CPU. Esto significa que puede crear más contenedores que máquinas virtuales en el mismo servidor.
Imagina que tienes un servidor que debe ejecutar varios sitios web para tus clientes. Por un lado, cada sitio web podría ser un bloque de host/servidor virtual de la misma instancia del servidor web Apache o Nginx. Por otro lado, al usar máquinas virtuales, crearías una máquina virtual anidada independiente para cada sitio web. Los contenedores Linux se encuentran entre los hosts virtuales y las máquinas virtuales.
LXD te permite crear y administrar estos contenedores. LXD proporciona un servicio de hipervisor para gestionar todo el ciclo de vida de los contenedores. En este tutorial, configurarás LXD y lo usarás para ejecutar Nginx en un contenedor. Después, dirigirás el tráfico de internet al contenedor para que una página web de ejemplo sea accesible.
Prerrequisitos
Para completar este tutorial, necesitarás lo siguiente:
Un servidor con Ubuntu 20.04 . Para configurar un servidor, incluyendo un usuario sudo no root y un firewall, puede crear un Droplet de IsnHosting con Ubuntu 20.04 y luego seguir nuestra Guía de configuración inicial del servidor . Anote la dirección IP pública de su servidor. Más adelante la llamaremos your_server_ip.
Al menos 5 GB de almacenamiento en bloque. Para configurarlo, puede seguir la Guía rápida de volúmenes de almacenamiento en bloque de IsnHosting. En la configuración del almacenamiento en bloque, seleccione Manually Format & Mount[para permitir que LXD lo prepare según sea necesario]. Esto se utilizará para almacenar todos los datos relacionados con los contenedores.
Nota: A partir de Ubuntu 20.04, LXD está disponible oficialmente como paquete snap. Este nuevo formato de paquete ofrece varias ventajas. Un paquete snap se puede instalar en cualquier distribución de Linux compatible con este tipo de paquetes . Se recomienda usar un servidor con al menos 2 GB de RAM al ejecutar el paquete snap de LXD. La siguiente tabla resume las características del paquete snap de LXD:
Característica
paquete instantáneo
versiones LXD disponibles
2.0, 3.0, 4.0, 4.x
requisitos de memoria
Moderado, para el servicio SnapD . Servidor recomendado con 2 GB de RAM.
Consideraciones de actualización
Puede aplazar la actualización de LXD hasta 60 días
Capacidad de actualizar desde otro formato de paquete
Puede actualizar de deb a snap.
Sigue el resto de este tutorial para usar LXD desde el paquete snap en Ubuntu 20.04. Si, por el contrario, quieres usar el paquete deb de LXD, consulta nuestro tutorial ” Cómo instalar y usar LXD en Ubuntu 18.04″ .
Paso 1: Preparación del entorno para LXD
Antes de configurar y ejecutar LXD, deberá preparar el entorno de su servidor. Esto implica agregar el usuario sudo al lxdgrupo y configurar el backend de almacenamiento.
Cómo agregar su cuenta no root al lxdgrupo Unix
Al configurar su cuenta no root, agréguela al lxdgrupo con el siguiente comando. El addusercomando toma como argumentos la cuenta de usuario y el grupo Unix para agregar la cuenta de usuario al grupo Unix existente:
sudo adduser sammy lxd
Ahora aplica la nueva membresía:
su sammy
Introduzca su contraseña y presione ENTER.
Por último, confirma que tu usuario ahora está agregado al lxdgrupo:
id -nG
Recibirás un resultado como este:
sammy sudo lxd
Ahora está listo para continuar configurando LXD.
Preparación del backend de almacenamiento
Para comenzar, configurará el backend de almacenamiento.
El sistema de almacenamiento recomendado para LXD en Ubuntu es el sistema de archivos ZFS. ZFS también funciona muy bien con el almacenamiento en bloque de IsnHosting . Para habilitar la compatibilidad con ZFS en LXD, primero actualice la lista de paquetes y luego instale el zfsutils-linuxpaquete auxiliar:
Anote la ruta completa del archivo de su dispositivo de almacenamiento. La usará en el siguiente paso al configurar LXD.
Paso 2: Inicialización y configuración de LXD
LXD está disponible como paquete snap en Ubuntu 20.04. Viene preinstalado, pero debes configurarlo.
Primero, verifique que el paquete snap de LXD esté instalado. El comando snap listmuestra los paquetes snap instalados:
snap list
Ubuntu 20.04 preinstala LXD 4.0.3 y está siguiendo el 4.0/stablecanal. LXD 4.0 tiene soporte durante cinco años (hasta 2025). Solo recibirá actualizaciones de seguridad:
Output of the "snap list" command — Listing the installed snap packagesName Version Rev Tracking Publisher Notes
core18 20200724 1885 latest/stable canonical✓ base
lxd 4.0.3 16922 4.0/stable/… canonical✓ -
snapd 2.45.3.1 8790 latest/stable canonical✓ snapd
Para obtener más información sobre el paquete snap instalado en LXD, ejecute snap info lxd. Podrá ver las versiones disponibles, incluyendo la fecha de la última actualización.
Ahora configurarás LXD.
Configuración de opciones de almacenamiento para LXD
Inicie el proceso de inicialización de LXD utilizando el sudo lxd initcomando:
sudo lxd init
Primero, el programa le preguntará si desea habilitar la agrupación en clústeres de LXD. Para este tutorial, presione ENTERpara aceptar el valor predeterminado noo escriba noy luego presione ENTER. La agrupación en clústeres de LXD es un tema avanzado que permite alta disponibilidad para su configuración de LXD y requiere al menos tres servidores LXD ejecutándose en un clúster:
OutputWould you like to use LXD clustering? (yes/no) [default=no]: no
Las siguientes seis indicaciones abordan el pool de almacenamiento. Proporcione las siguientes respuestas:
Presione ENTERpara configurar un nuevo grupo de almacenamiento.
Presione ENTERpara aceptar el nombre del grupo de almacenamiento predeterminado.
Presione ENTERpara aceptar el zfsbackend de almacenamiento predeterminado.
Presione ENTERpara crear un nuevo grupo ZFS.
Escriba yespara utilizar un dispositivo de bloque existente.
Por último, escriba la ruta completa al nombre del dispositivo de almacenamiento en bloque (esto es lo que registró anteriormente. Debería ser algo como: )./dev/disk/by-id/device_name
Sus respuestas se verán así:
OutputDo you want to configure a new storage pool? (yes/no) [default=yes]: yes
Name of the new storage pool [default=default]: default
Name of the storage backend to use (btrfs, dir, lvm, zfs) [default=zfs]: zfs
Create a new ZFS pool? (yes/no) [default=yes]: yes
Would you like to use an existing block device? (yes/no) [default=no]: yes
Path to the existing block device: /dev/disk/by-id/scsi-0DO_Volume_volume-fra1-01
Ya has configurado el backend de almacenamiento para LXD. Siguiendo con initel script de LXD, configurarás algunas opciones de red.
Configuración de opciones de red para LXD
LXD ahora pregunta si desea conectarse a un servidor MAAS (Metal As A Server). MAAS es un software que hace que un servidor físico parezca una máquina virtual y se gestione como tal.
Estamos ejecutando LXD en modo independiente, por lo tanto, acepte el valor predeterminado y responda no:
OutputWould you like to connect to a MAAS server? (yes/no) [default=no]: no
Se le pedirá que configure un puente de red para los contenedores LXD. Esto habilita las siguientes funciones:
Cada contenedor obtiene automáticamente una dirección IP privada.
Cada contenedor puede comunicarse con los demás a través de la red privada.
Cada contenedor puede iniciar conexiones a Internet.
De forma predeterminada, cada contenedor permanece inaccesible desde internet; no es posible iniciar una conexión desde internet y acceder a un contenedor a menos que se habilite explícitamente. Aprenderá a permitir el acceso a un contenedor específico en el siguiente paso.
Cuando se le solicite crear un nuevo puente de red local, elija yes:
OutputWould you like to create a new local network bridge? (yes/no) [default=yes]: yes
Luego acepta el nombre predeterminado lxdbr0:
OutputWhat should the new bridge be called? [default=lxdbr0]: lxdbr0
Acepte la selección automatizada del rango de direcciones IP privadas para el puente:
OutputWhat IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: auto
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: auto
Finalmente, LXD plantea las siguientes preguntas diversas:
Cuando se le pregunte si desea administrar LXD a través de la red, presione ENTERo responda no:
OutputWould you like LXD to be available over the network? (yes/no) [default=no]: no
Cuando se le pregunte si desea actualizar automáticamente las imágenes de contenedores obsoletos, presione ENTERo responda yes:
OutputWould you like stale cached images to be updated automatically? (yes/no) [default=yes] yes
Cuando se le pregunte si desea ver y conservar la configuración YAML que acaba de crear, responda yessi así lo desea. De lo contrario, presione ENTERo responda no:
OutputWould you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: no
Se ejecutará un script en segundo plano. Es normal que no se reciba ninguna salida.
Ya has configurado tus opciones de red y almacenamiento para LXD. A continuación, crearás tu primer contenedor LXD.
Paso 2: Creación y configuración de un contenedor LXD
Ahora que ha configurado LXD correctamente, está listo para crear y administrar su primer contenedor. En LXD, los contenedores se administran mediante el comando lxcseguido de una acción, como list, launch, y .startstopdelete
Utilice lxc listpara ver los contenedores instalados disponibles:
lxc list
Dado que esta es la primera vez que el lxccomando se comunica con el hipervisor LXD, muestra información sobre cómo iniciar un contenedor. Finalmente, el comando muestra una lista vacía de contenedores. Esto es normal, ya que aún no hemos creado ninguno.
Output of the "lxd list" commandTo start your first container, try: lxc launch ubuntu:18.04
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
Ahora cree un contenedor que ejecute Nginx. Para ello, primero use el lxc launchcomando para crear e iniciar un contenedor de Ubuntu 18.04 llamado webserver.
Crea el webservercontenedor. ” 18.04in” ubuntu:18.04es un acceso directo para Ubuntu 18.04. ubuntu:Es el identificador del repositorio preconfigurado de imágenes LXD. También puedes usar ubuntu:bionic:
lxc launch ubuntu:20.04 webserver
Nota : Puede encontrar la lista completa de imágenes de Ubuntu disponibles ejecutando [<sub> lxc image list ubuntu:y</sub> otras distribuciones de Linux ejecutando [<sub>y</sub>] lxc image list images:. Tanto [<sub> ubuntu:y</sub> images:son repositorios de imágenes de contenedor. Para cada imagen de contenedor, puede obtener más información con el comando [<sub>y</sub>] lxc image info ubuntu:20.04.
Como es la primera vez que crea un contenedor, este comando descarga la imagen del contenedor de internet y la almacena en caché. Verá este resultado una vez que el nuevo contenedor termine de descargarse:
OutputCreating webserver
Starting webserver
Con el webservercontenedor iniciado, use el lxc listcomando para mostrar información sobre él. Hemos añadido ` --columns ns4para` para mostrar solo las columnas de name`,` statey IPv4`dirección`. El comando predeterminado lxc listmuestra tres columnas más: la dirección IPv6, si el contenedor es persistente o efímero, y si hay instantáneas disponibles para cada contenedor.
lxc list --columns ns4
La salida muestra una tabla con el nombre de cada contenedor, su estado actual, su dirección IP y su tipo:
Output+-----------+---------+------------------------------------+
| NAME | STATE | IPV4 |
+-----------+---------+------------------------------------+
| webserver | RUNNING | your_webserver_container_ip (eth0) |
+-----------+---------+------------------------------------+
El servidor DHCP de LXD proporciona esta dirección IP y, en la mayoría de los casos, se mantendrá igual incluso al reiniciar el servidor. Sin embargo, en los siguientes pasos, creará iptablesreglas para reenviar conexiones desde internet al contenedor. Por lo tanto, debe indicarle al servidor DHCP de LXD que siempre asigne la misma dirección IP al contenedor.
El siguiente conjunto de comandos configurará el contenedor para obtener una asignación de IP estática. Primero, anulará la configuración de red del eth0dispositivo heredada del perfil LXD predeterminado. Esto le permite establecer una dirección IP estática, lo que garantiza la correcta comunicación del tráfico web hacia y desde el contenedor.
Específicamente, lxc config devicees un comando que configconfigura un dispositivo device. La primera línea contiene la subacción overridepara anular el dispositivo eth0del contenedor webserver. La segunda línea contiene la subacción para configurar el ipv4.addresscampo del eth0dispositivo del webservercontenedor con la dirección IP proporcionada inicialmente por el servidor DHCP.
Ejecute el primer configcomando:
lxc config device override webserver eth0
Recibirás un resultado como este:
OutputDevice eth0 overridden for webserver
Ahora configure la IP estática:
lxc config device set webserver eth0 ipv4.address your_webserver_container_ip
Si el comando es exitoso, no recibirá ninguna salida.
Reiniciar el contenedor:
lxc restart webserver
Ahora verifique el estado del contenedor:
lxc list
Deberías ver que el contenedor es RUNNINGy la IPV4dirección es tu dirección estática.
Está listo para instalar y configurar Nginx dentro del contenedor.
Paso 3: Configuración de Nginx dentro de un contenedor LXD
En este paso te conectarás al webservercontenedor y configurarás el servidor web.
Conéctese al contenedor con lxc shellel comando, que toma el nombre del contenedor e inicia un shell dentro del contenedor:
lxc shell webserver
Una vez dentro del contenedor, el indicador de shell se verá así:
[environment second]
Este shell, incluso si es un shell raíz, está limitado al contenedor. Todo lo que se ejecuta en él permanece en el contenedor y no puede escapar al servidor host.
Nota: Al introducir un shell en un contenedor, es posible que vea una advertencia como mesg: ttyname failed: No such device. Este mensaje se genera cuando el shell del contenedor intenta ejecutar el comando mesgdesde el archivo de configuración /root/.profile. Puede ignorarlo sin problema. Para evitarlo, puede eliminar el comando mesg n || truede /root/.profile.
Una vez dentro de su contenedor, actualice la lista de paquetes e instale Nginx:
apt update
apt install nginx
Con Nginx instalado, ahora editará la página web predeterminada de Nginx. En concreto, añadirá dos líneas de texto para que quede claro que este sitio está alojado en el webservercontenedor.
Usando nanosu editor preferido, abra el archivo /var/www/html/index.nginx-debian.html:
nano /var/www/html/index.nginx-debian.html
Añade las dos frases resaltadas al archivo:
/var/www/html/index.nginx-debian.html<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx on LXD container webserver!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx on LXD container webserver!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
...
Editó el archivo en dos partes y agregó específicamente el texto on LXD container webserver. Guarde el archivo y salga del editor de texto.
Ahora cierre la sesión del contenedor:
logout
Una vez que aparezca el mensaje predeterminado del servidor, use [nombre del servidor] curlpara comprobar que el servidor web del contenedor funciona correctamente. Para ello, necesitará la dirección IP del contenedor web, que obtuvo con el lxc listcomando anterior.
Utilice curlpara probar su servidor web:
curl http://your_webserver_container_ip
Recibirá la página de bienvenida HTML predeterminada de Nginx. Tenga en cuenta que incluye sus modificaciones:
Output<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx on LXD container webserver!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx on LXD container webserver!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
...
El servidor web funciona, pero solo se puede acceder a él desde el host usando la IP privada. En el siguiente paso, enrutará las solicitudes externas a este contenedor para que todo el mundo pueda acceder a su sitio web a través de internet.
Paso 4: Reenvío de conexiones entrantes al contenedor Nginx mediante LXD
Ahora que ha configurado Nginx, es hora de conectar el contenedor del servidor web a internet. Para comenzar, debe configurar el servidor para que reenvíe 80al webservercontenedor cualquier conexión que reciba en el puerto. Para ello, creará una iptablesregla para reenviar las conexiones de red. Puede obtener más información sobre IPTables en nuestros tutoriales ” Cómo funciona el firewall de IPtables” y “Fundamentos de IPtables: Reglas y comandos comunes del firewall” .
Este iptablescomando requiere dos direcciones IP: la dirección IP pública del servidor ( your_server_ip) y la dirección IP privada del webservercontenedor ( your_webserver_container_ip), que puede obtener mediante el lxc listcomando .
Ejecute este comando para crear una nueva regla de IPtables:
-t natespecifica que estamos usando la nattabla para la traducción de direcciones.
-I PREROUTINGespecifica que estamos agregando la regla a la cadena PREROUTING.
-i $IFACEespecifica la interfaz eth0, que es la interfaz de red pública predeterminada en el host para Droplets.
-p TCPdice que estamos usando el protocolo TCP.
-d $PUBLIC_IPEspecifica la dirección IP de destino para la regla.
--dport $PORT: especifica el puerto de destino (por ejemplo 80).
-j DNATdice que queremos realizar un salto a Destino NAT (DNAT).
--to-destination $CONTAINER_IP:$PORT dice que queremos que la solicitud vaya a la dirección IP del contenedor específico y al puerto de destino.
Nota: Puede reutilizar este comando para configurar reglas de reenvío. Restablezca las variables , y PORTal PUBLIC_IPprincipio de la línea. Simplemente cambie los valores resaltados.CONTAINER_IPIFACE
Ahora prueba que el servidor web sea accesible desde Internet.
Utilice el curlcomando desde su máquina local para probar las conexiones:
curl --verbose 'http://your_server_ip'
Verás los encabezados seguidos del contenido de la página web que creaste en el contenedor:
Output* Trying your_server_ip...
* Connected to your_server_ip (your_server_ip) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.10.0 (Ubuntu)
...
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx on LXD container webserver!</title>
<style>
body {
...
Esto confirma que las solicitudes van al contenedor.
Por último, guardará la regla de firewall para que se vuelva a aplicar después de reiniciar.
Para ello, primero instale el iptables-persistentpaquete:
sudo apt install iptables-persistent
Al instalar el paquete, la aplicación le solicitará que guarde las reglas de firewall actuales. Acepte y guarde todas las reglas.
Al reiniciar el equipo, se cargará la regla del firewall. Además, el servicio Nginx del contenedor LXD se reiniciará automáticamente.
Has configurado LXD correctamente. En el paso final, aprenderás a detener y destruir el servicio.
Paso 5: Detención y retirada de contenedores mediante LXD
Puedes decidir que quieres desactivar el contenedor y eliminarlo. En este paso, lo detendrás y lo eliminarás.
Primero, detenga el contenedor:
lxc stop webserver
Utilice el lxc listcomando para verificar el estado:
lxc list
Verás que el estado del contenedor dice STOPPED:
Output+-----------+---------+------+------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+-----------+---------+------+------+------------+-----------+
| webserver | STOPPED | | | PERSISTENT | 0 |
+-----------+---------+------+------+------------+-----------+
Para retirar el contenedor, utilice lxc delete:
lxc delete webserver
Al ejecutarlo lxc listnuevamente se muestra que no hay ningún contenedor ejecutándose:
lxc list
El comando generará el siguiente resultado:
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
Utilice el lxc helpcomando para ver opciones adicionales.
Para eliminar la regla de firewall que enruta el tráfico al contenedor, primero ubique la regla en la lista de reglas con este comando, que asocia un número de línea con cada regla:
sudo iptables -t nat -L PREROUTING --line-numbers
Verás tu regla, precedida por un número de línea, de la siguiente manera:
OutputChain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 DNAT tcp -- anywhere your_server_ip tcp dpt:http /* forward to the Nginx container */ to:your_container_ip
Utilice ese número de línea para eliminar la regla:
sudo iptables -t nat -D PREROUTING 1
Enumere nuevamente las reglas para garantizar la eliminación:
sudo iptables -t nat -L PREROUTING --line-numbers
Se elimina la regla:
OutputChain PREROUTING (policy ACCEPT)
num target prot opt source destination
Ahora guarde los cambios para que la regla no vuelva a aparecer cuando reinicie su servidor:
sudo netfilter-persistent save
Ahora puedes crear otro contenedor con tu propia configuración y agregar una nueva regla de firewall para reenviarle tráfico.
Conclusión
En este tutorial, instalaste y configuraste LXD. Luego, creaste un sitio web con Nginx, ejecutándose dentro de un contenedor LXD, y lo publicaste mediante IPtables.
Desde aquí, puedes configurar más sitios web, cada uno confinado en su propio contenedor, y usar un proxy inverso para dirigir el tráfico al contenedor correspondiente. El tutorial ” Cómo alojar varios sitios web con Nginx y HAProxy usando LXD en Ubuntu 16.04″ te guía en esta configuración.
Apt es una interfaz de línea de comandos para el sistema de empaquetado dpkg y es la forma preferida de gestionar software desde la línea de comandos en muchas distribuciones. Es el principal sistema de gestión de paquetes en Debian y distribuciones Linux basadas en Debian, como Ubuntu.
Mientras que una herramienta llamada “dpkg” constituye la capa de empaquetado subyacente, aptproporciona apt-cacheinterfaces intuitivas e implementa la gestión de dependencias. Esto permite a los usuarios gestionar grandes cantidades de software de forma eficiente y sencilla.
En esta guía, analizaremos el uso básico de apty apt-cachecómo pueden administrar su software. Practicaremos en un servidor en la nube Ubuntu 22.04, pero los mismos pasos y técnicas se aplican a cualquier otra distribución basada en Ubuntu o Debian.
Cómo actualizar la base de datos de paquetes con Apt
Apt opera con una base de datos de software conocido y disponible. Realiza instalaciones, búsquedas de paquetes y muchas otras operaciones consultando esta base de datos.
Por eso, antes de comenzar cualquier operación de empaquetado con apt, debemos asegurarnos de que nuestra copia local de la base de datos esté actualizada.
Actualice la base de datos local con apt update. Apt requiere privilegios administrativos para la mayoría de las operaciones:
sudo apt update
Verá una lista de los servidores de los que estamos recuperando información. Después de esto, su base de datos debería estar actualizada.
Cómo actualizar los paquetes instalados con Apt
Puede actualizar los paquetes de su sistema usando apt upgrade. Se le solicitará que confirme las actualizaciones y reinicie los servicios del sistema actualizados.
sudo apt upgrade
Cómo instalar nuevos paquetes con Apt
Si conoce el nombre de un paquete que necesita instalar, puede instalarlo usando apt install:
sudo apt install package1 package2 …
Puedes ver que es posible instalar varios paquetes a la vez, lo que es útil para adquirir todo el software necesario para un proyecto en un solo paso.
Apt instala no sólo el software solicitado, sino también cualquier software necesario para instalarlo o ejecutarlo.
Puedes instalar un programa llamado slescribiendo:
sudo apt install sl
Después de eso, podrás ejecutarlo slen la línea de comandos.
Cómo eliminar un paquete con Apt
Para eliminar un paquete de su sistema, ejecute apt remove:
sudo apt remove package_name
Este comando elimina el paquete, pero conserva los archivos de configuración por si lo vuelve a instalar más adelante. De esta forma, la configuración se mantendrá intacta, aunque el programa no esté instalado.
Si necesita limpiar los archivos de configuración y el programa, utilice apt purge:
sudo apt purge package_name
Esto desinstala el paquete y elimina cualquier archivo de configuración asociado con el paquete.
Para eliminar cualquier paquete que se instaló automáticamente para dar soporte a otro programa y que ya no sea necesario, escriba el siguiente comando:
sudo apt autoremove
También puede especificar un nombre de paquete después del autoremovecomando para desinstalar un paquete y sus dependencias.
Banderas de opciones comunes de Apt
Hay varias opciones adicionales que se pueden especificar mediante indicadores. Repasaremos algunas de las más comunes.
Para hacer un “ensayo” de un procedimiento para tener una idea de lo que hará una acción, puede pasar la -sbandera para “simular”:
sudo apt install -s htop
OutputReading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
lm-sensors
The following NEW packages will be installed:
htop
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Inst htop (3.0.5-7build2 Ubuntu:22.04/jammy [amd64])
Conf htop (3.0.5-7build2 Ubuntu:22.04/jammy [amd64])
En lugar de acciones reales, puede ver una sección Insty Confque especifica dónde se instalaría y configuraría el paquete si se eliminara el “-s”.
Si no desea que se le solicite que confirme sus opciones, también puede pasar la -ybandera para asumir automáticamente “sí” a las preguntas.
sudo apt remove -y htop
Si desea descargar un paquete, pero no instalarlo, puede ejecutar el siguiente comando:
sudo apt install -d packagename
Los archivos se conservarán en formato /var/cache/apt/archives.
Si desea suprimir la salida, puede pasar la -qqbandera al comando:
sudo apt remove -qq packagename
Cómo encontrar un paquete con Apt-Cache
La herramienta de empaquetado apt es en realidad un conjunto de herramientas complementarias relacionadas que se utilizan para administrar el software del sistema.
Mientras aptse utiliza para actualizar, instalar y eliminar paquetes, apt-cachese utiliza para consultar la base de datos de paquetes para obtener información sobre los paquetes.
Puede usar apt-cache searchpara buscar un paquete que se ajuste a sus necesidades. Tenga en cuenta que apt-cache no suele requerir privilegios de administrador:
apt-cache search what_you_are_looking_for
Por ejemplo, para encontrar htopuna versión mejorada del topmonitor del sistema, puede utilizar:
apt-cache search htop
Outputhtop - interactive processes viewer
aha - ANSI color to HTML converter
bashtop - Resource monitor that shows usage and stats
bpytop - Resource monitor that shows usage and stats
btop - Modern and colorful command line resource monitor that shows usage and stats
libauthen-oath-perl - Perl module for OATH One Time Passwords
pftools - build and search protein and DNA generalized profiles
También puedes buscar términos más genéricos. En este ejemplo, buscaremos software de conversión de MP3:
apt-cache search mp3 convert
Outputabcde - A Better CD Encoder
cue2toc - converts CUE files to cdrdao's TOC format
dir2ogg - audio file converter into ogg-vorbis format
easytag - GTK+ editor for audio file tags
ebook2cw - convert ebooks to Morse MP3s/OGGs
ebook2cwgui - GUI for ebook2cw
ffcvt - ffmpeg convert wrapper tool
. . .
Cómo ver la información del paquete con Apt-Cache
Para ver información sobre un paquete, incluida una descripción extendida, utilice la siguiente sintaxis:
apt-cache show package_name
Esto también proporcionará el tamaño de la descarga y las dependencias necesarias para el paquete.
Para ver si un paquete está instalado y verificar a qué repositorio pertenece, puede utilizar apt-cache policy:
apt-cache policy package_name
Conclusión
Ahora debería saber lo suficiente sobre apt-get y apt-cache para administrar la mayor parte del software en su servidor.
Si bien a veces es necesario ir más allá de estas herramientas y del software disponible en los repositorios, la mayoría de las operaciones de software pueden gestionarse mediante estas herramientas.
A continuación, podrá leer sobre la gestión de paquetes de Ubuntu y Debian en detalle.
Las utilidades de Linux suelen seguir la filosofía de diseño de Unix. Se fomenta que las herramientas sean pequeñas, utilicen archivos de texto sin formato para la entrada y salida, y operen de forma modular. Gracias a este legado, disponemos de una gran funcionalidad de procesamiento de texto con herramientas como sed y awk.
awkEs un lenguaje de programación y procesador de texto que permite manipular datos textuales de forma muy útil. En esta guía, explorarás cómo usar la awkherramienta de línea de comandos y cómo procesar texto.
Sintaxis básica
El awkcomando está incluido de forma predeterminada en todos los sistemas Linux modernos, por lo que no es necesario instalarlo para comenzar a usarlo.
awkEs especialmente útil al gestionar archivos de texto con un formato predecible. Por ejemplo, es excelente para analizar y manipular datos tabulares. Opera línea por línea e itera por todo el archivo.
De forma predeterminada, se utilizan espacios en blanco (tabuladores, etc.) para separar los campos. Afortunadamente, muchos archivos de configuración de Linux utilizan este formato.
Puede omitir la parte de búsqueda o la parte de acción de cualquier awkcomando. Por defecto, la acción que se realiza si no se especifica la parte “acción” es “imprimir”. Esto simplemente imprime todas las líneas que coinciden.
Si no se proporciona la parte de búsqueda, awkrealiza la acción que aparece en cada línea.
Si se proporcionan ambos, awkutiliza la parte de búsqueda para decidir si la línea actual refleja el patrón y luego realiza las acciones en función de las coincidencias.
En su forma más simple, puedes usar awklike catpara imprimir todas las líneas de un archivo de texto en la pantalla.
Crea un favorite_food.txtarchivo que enumere las comidas favoritas de un grupo de amigos:
echo "carrot sandy
wasabi luke
sandwich brian
salad ryan
spaghetti jessica" > favorite_food.txt
Ahora use el awkcomando para imprimir el archivo en la pantalla:
awk '{print}' favorite_food.txt
Verás el archivo impreso en la pantalla:
Outputcarrot sandy
wasabi luke
sandwich brian
salad ryan
spaghetti jessica
Esto no es muy útil. Probemos awklas funciones de filtrado de búsqueda buscando el texto “arena” en el archivo:
awk '/sand/' favorite_food.txt
Outputcarrot sandy
sandwich brian
Como puedes ver, awkahora solo imprime las líneas que tienen los caracteres “sand” en ellas.
Usando expresiones regulares, puedes seleccionar partes específicas del texto. Para mostrar solo la línea que empieza con las letras “sand”, usa la expresión regular ^sand:
awk '/^sand/' favorite_food.txt
Esta vez, solo se muestra una línea:
Outputsandwich brian
De igual forma, puede usar la sección de acción para especificar qué información desea imprimir. Por ejemplo, para imprimir solo la primera columna, use el siguiente comando:
awk '/^sand/ {print $1;}' favorite_food.txt
Outputsandwich
Puede referenciar cada columna (delimitada por espacios) mediante variables asociadas a su número de columna. Por ejemplo, la primera columna es $1, la segunda es $2, y puede referenciar toda la línea con $0.
Variables internas y formato expandido
El awkcomando utiliza algunas variables internas para asignar ciertas piezas de información mientras procesa un archivo.
Las variables internas que awkutiliza son:
NOMBRE DE ARCHIVO : Hace referencia al archivo de entrada actual.
FNR : Referencia el número del registro actual en relación con el archivo de entrada actual. Por ejemplo, si tiene dos archivos de entrada, esto le indicaría el número de registro de cada archivo en lugar del total.
FS : El separador de campo actual que se utiliza para identificar cada campo de un registro. Por defecto, se establece en espacios.
NF : El número de campos en el registro actual.
NR : El número del registro actual.
OFS : El separador de campo para los datos de salida. Por defecto, se establece en espacios.
ORS : El separador de registros para los datos de salida. Por defecto, es un carácter de nueva línea.
RS : El separador de registros utilizado para distinguir registros separados en el archivo de entrada. Por defecto, es un carácter de nueva línea.
Puede cambiar los valores de estas variables a voluntad para adaptarlas a las necesidades de sus archivos. Normalmente, esto se hace durante la fase de inicialización del procesamiento.
Esto nos lleva a otro concepto importante. La awksintaxis es un poco más compleja que la que has usado hasta ahora. También hay bloques opcionales BEGINque ENDpueden contener comandos para ejecutarse antes y después del procesamiento del archivo, respectivamente.
Esto hace que nuestra sintaxis expandida se vea más o menos así:
Las palabras clave BEGINy ENDson conjuntos específicos de condiciones, al igual que los parámetros de búsqueda. Coinciden antes y después de procesar el documento.
Esto significa que puedes cambiar algunas de las variables internas de la BEGINsección. Por ejemplo, el /etc/passwdarchivo se delimita con dos puntos ( :) en lugar de espacios.
Para imprimir la primera columna de este archivo, ejecute el siguiente comando:
awk 'BEGIN { FS=":"; }
{ print $1; }' /etc/passwd
Outputroot
daemon
bin
sys
sync
games
man
. . .
Puede usar los bloques BEGINy ENDpara imprimir información sobre los campos que está imprimiendo. Use el siguiente comando para transformar los datos del archivo en una tabla, con tabulaciones bien espaciadas \t:
Como puedes ver, puedes formatear las cosas bastante bien aprovechando algunas de awklas características de .
Cada sección expandida es opcional. De hecho, la sección de acción principal es opcional si se define otra sección. Por ejemplo, se pueden hacer cosas como esta:
awk 'BEGIN { print "We can use awk like the echo command"; }'
Y verás este resultado:
OutputWe can use awk like the echo command
Ahora veamos cómo buscar texto dentro de los campos de salida.
Búsqueda de campos y expresiones compuestas
En uno de los ejemplos anteriores, imprimiste la línea del favorite_food.txtarchivo que comenzaba con “sand”. Esto fue fácil porque buscabas el comienzo de toda la línea.
¿Qué sucedería si quisieras averiguar si un patrón de búsqueda coincide al principio de un campo ?
Cree una nueva versión del favorite_food.txtarchivo que agregue un número de artículo delante de la comida de cada persona:
echo "1 carrot sandy
2 wasabi luke
3 sandwich brian
4 salad ryan
5 spaghetti jessica" > favorite_food.txt
Si desea encontrar todos los alimentos de este archivo que comienzan con “sa”, puede comenzar probando algo como esto:
awk '/sa/' favorite_food.txt
Esto muestra todas las líneas que contienen “sa”:
Output1 carrot sandy
2 wasabi luke
3 sandwich brian
4 salad ryan
Aquí, se busca cualquier instancia de “sa” en la palabra. Esto termina incluyendo palabras como “wasabi”, que tiene el patrón en el medio, o “sandy”, que no está en la columna deseada. En este caso, solo se buscan palabras que empiecen por “sa” en la segunda columna.
Puedes indicar awkque solo coincida con el comienzo de la segunda columna usando este comando:
awk '$2 ~ /^sa/' favorite_food.txt
Como puedes ver, esto nos permite buscar una coincidencia solo al comienzo de la segunda columna.
La field_num ~parte especifica que awksólo se debe prestar atención a la segunda columna.
Output3 sandwich brian
4 salad ryan
Puedes buscar fácilmente elementos que no coincidan incluyendo el carácter “!” antes de la tilde (~). Este comando devolverá todas las líneas que no tengan un alimento que empiece por “sa”:
awk '$2 !~ /^sa/' favorite_food.txt
Output1 carrot sandy
2 wasabi luke
5 spaghetti jessica
Si más adelante decide que solo le interesan las líneas que no comienzan con “sa” y el número de elemento es menor que 5, puede usar una expresión compuesta como esta:
awk '$2 !~ /^sa/ && $1 < 5' favorite_food.txt
Esto introduce algunos conceptos nuevos. El primero es la posibilidad de añadir requisitos adicionales para que la línea coincida mediante el &&operador. Con este operador, se puede combinar cualquier número de condiciones para que la línea coincida. En este caso, se utiliza este operador para añadir una comprobación de que el valor de la primera columna sea menor que 5.
Verás este resultado:
Output1 carrot sandy
2 wasabi luke
Puedes usarlo awkpara procesar archivos, pero también puedes trabajar con la salida de otros programas.
Procesamiento de la salida de otros programas
Puedes usar el awkcomando para analizar la salida de otros programas en lugar de especificar un nombre de archivo. Por ejemplo, puedes usar awkpara analizar la dirección IPv4 del ipcomando.
El ip acomando muestra la dirección IP, la dirección de difusión y otra información sobre todas las interfaces de red de su equipo. Para mostrar la información de la interfaz llamada eth0, utilice este comando:
ip a s eth0
Verás los siguientes resultados:
Output2571: eth0@if2572: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:0b brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.11/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
Puedes usarlo awkpara apuntar a la inetlínea y luego imprimir solo la dirección IP:
ip a s eth0 | awk -F '[\/ ]+' '/inet / {print $3}'
La -Fbandera indica awkque se debe delimitar con barras o espacios usando la expresión regular [\/ ]+. Esto divide la línea inet 172.17.0.11/16en campos separados. La dirección IP se encuentra en el tercer campo porque los espacios al principio de la línea también cuentan como un campo, ya que se delimitó con espacios además de barras. Tenga en cuenta que, awken este caso, los espacios consecutivos se tratan como un solo espacio.
La salida muestra la dirección IP:
Output172.17.0.11
Encontrarás muchos lugares donde puedes usar awkpara buscar o analizar la salida de otros comandos.
Conclusión
A estas alturas, deberías tener una comprensión básica de cómo usar el awkcomando para manipular, formatear e imprimir selectivamente archivos y secuencias de texto. Sin embargo, Awk es un tema mucho más amplio y, en realidad, es un lenguaje de programación completo con asignación de variables, estructuras de control, funciones integradas y más. Puedes usarlo en tus propios scripts para formatear texto de forma fiable.