Carregando agora

🔧 Como Usar sed e awk para Modificar Arquivos de Configuração no Linux 📝

Olá pessoal, bom dia, boa tarde e boa noite, Prof. Juliano Ramos por aqui – A vida é muito boa e com Deus sempre vai dar certo.


Como administradores de sistema, sabemos que a maior parte dos arquivos de configuração do Linux são em texto simples. Isso, que poderia parecer uma limitação, na verdade é uma grande vantagem! 🥳 Permite que ferramentas de linha de comando poderosas como o sed e o awk entrem em ação, transformando tarefas de manutenção tediosas em processos automatizados.

Enquanto novatos podem se sentir confortáveis editando arquivos manualmente com o vi ou nano, sysadmins experientes sabem que a verdadeira magia acontece quando automatizamos a análise e a reescrita desses arquivos. Com sed e awk, podemos corresponder a padrões, extrair dados e fazer alterações em tempo real diretamente do terminal ou dentro de scripts.

Neste artigo, vamos explorar como usar essas duas ferramentas com exemplos práticos. Vamos mostrar como atualizar endereços IP, extrair valores e até mesmo remover linhas de forma eficiente, para que você possa economizar tempo e esforço. 💪

Exemplo 1: Atualizando um Parâmetro com o Comando sed

Imagine que você precisa mudar a porta do SSH em um servidor. Em vez de abrir o arquivo e procurar a linha manualmente, você pode usar o sed para fazer isso de forma limpa e segura.

Objetivo: Mudar a diretiva ListenPort no arquivo /etc/ssh/sshd_config para 2222.

Bash

sudo sed -i 's/^#\?ListenPort.*/ListenPort 2222/' /etc/ssh/sshd_config

Como funciona? 🧠

  • O comando sudo é usado para ter permissão de escrita no arquivo.
  • O sinalizador -i diz ao sed para editar o arquivo no local, ou seja, salvar as mudanças diretamente.
  • A expressão 's/^#\?ListenPort.*/ListenPort 2222/' é a parte principal:
    • s/ inicia o comando de substituição.
    • ^#\? procura por linhas que podem ou não começar com o caractere de comentário #.
    • ListenPort.* encontra a diretiva ListenPort e o restante da linha.
    • Toda a linha encontrada é substituída por ListenPort 2222.

Essa abordagem é fantástica porque garante que, mesmo que a diretiva esteja comentada ou já tenha outro valor, ela será atualizada de forma limpa, sem duplicação.

Exemplo 2: Extraindo Valores com o Comando awk

Precisando extrair um valor específico de um arquivo? O awk é a ferramenta perfeita para isso! 🎯

Objetivo: Recuperar o valor da diretiva PermitRootLogin do arquivo de configuração do SSH.

Bash

awk '$1 == "PermitRootLogin" { print $2 }' /etc/ssh/sshd_config

Como funciona? 🤓

  • $1 == "PermitRootLogin" corresponde às linhas onde o primeiro campo ($1) é exatamente igual a “PermitRootLogin”.
  • { print $2 } imprime o segundo campo ($2) da linha correspondida, que é o valor real da diretiva.

Este comando irá verificar o arquivo e imprimir o valor, que geralmente é yes, no ou prohibit-password. Simples e direto!

Exemplo 3: Removendo uma Linha de Parâmetro com o Comando sed

Às vezes, uma linha de configuração se torna obsoleta ou indesejada. O sed pode remover essa linha de forma rápida e eficiente. 🗑️

Objetivo: Excluir qualquer linha que comece com UseDNS no arquivo /etc/ssh/sshd_config.

Bash

sudo sed -i '/^UseDNS/d' /etc/ssh/sshd_config

Como funciona? 💥

  • /^UseDNS/ corresponde a qualquer linha que comece com UseDNS.
  • O comando d diz ao sed para apagar (delete) essas linhas.
  • O flag -i aplica as alterações diretamente no arquivo.

Exemplo 4: Gerando um Relatório com o Comando awk

O awk é muito mais do que apenas extrair um valor. Ele pode ser usado para gerar relatórios e analisar dados. 📈

Objetivo: Supondo que você tenha um arquivo de configuração services.conf que lista o status de serviços, extrair apenas os nomes dos serviços que estão “em execução”.

Bash

# Conteúdo do arquivo services.conf:
# apache2 em execução
# mysql parou
# nginx em execução
# ssh em execução

awk '$2 == "em execução" { print $1 }' /etc/myapp/services.conf

Como funciona? 📊

  • $2 == "em execução" procura por linhas onde o segundo campo ($2) é igual a “em execução”.
  • { print $1 } imprime o primeiro campo ($1), que é o nome do serviço.

Isso é perfeito para scripts de monitoramento que precisam de uma lista dos serviços ativos em um servidor.

Exemplo 5: Inserindo uma Linha com o Comando sed

Você precisa adicionar uma nova linha de configuração em um ponto específico do arquivo? O sed te ajuda a manter a organização. ➕

Objetivo: Adicionar uma diretiva de Banner após a linha que contém PermitRootLogin no arquivo /etc/ssh/sshd_config.

Bash

sudo sed -i '/^PermitRootLogin/a Banner /etc/issue.net' /etc/ssh/sshd_config

Como funciona? 👇

  • /^PermitRootLogin/ corresponde à linha que contém “PermitRootLogin”.
  • O comando a anexa a linha (append) após a correspondência.
  • Banner /etc/issue.net é a linha que está sendo inserida.

Isso é muito útil para agrupar opções de configuração relacionadas logicamente.

Bônus: Combinando awk e sed em Scripts de Shell 🚀

Usuários avançados podem combinar awk e sed em scripts para automatizar tarefas de configuração em massa.

Objetivo: Percorrer todos os arquivos .conf em um diretório e atualizar o valor de MaxConnections para 500. Se a diretiva não existir, ela será adicionada.

Bash

#!/bin/bash

# Define o novo valor para o parâmetro
NOVO_VALOR=500

# Percorre todos os arquivos .conf em /etc/myapp/
for file in /etc/myapp/*.conf; do
  # Verifica se o arquivo contém a diretiva MaxConnections
  if awk '$1 == "MaxConnections"' "$file" > /dev/null; then
    # Usa sed para substituir o valor existente
    sed -i "s/^MaxConnections.*/MaxConnections $NOVO_VALOR/" "$file"
    echo "✅ MaxConnections atualizado em $file"
  else
    # Se a diretiva não existir, anexa-a ao final
    echo "MaxConnections $NOVO_VALOR" >> "$file"
    echo "➕ MaxConnections adicionado ao $file"
  fi
done

Este tipo de script é incrivelmente útil para gerenciar grandes ambientes, garantindo que vários arquivos de configuração tenham atualizações consistentes sem precisar de intervenção manual.


Conclusão 🏁

Dominar sed e awk é um passo fundamental para qualquer administrador de sistemas que busca eficiência e automação. Essas ferramentas de linha de comando, simples mas poderosas, permitem manipular arquivos de texto de forma programática, tornando o gerenciamento de configurações mais rápido, seguro e escalável.

Espero que esses exemplos práticos ajudem você a dar os primeiros passos e a descobrir o poder dessas ferramentas. Abrace a automação e liberte-se de tarefas repetitivas!


Quer aprender mais sobre Linux? Tenha acesso a todos os meus cursos, livros , videos exclusivos, através da minha escola: https://certbest.com.br/ltc/

You May Have Missed