Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante   Click to listen highlighted text! Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante

Linguagem de Programação (Subsequente de Infraestrutura) – Aula 05

📘 Módulo V – Aplicações Práticas e Projeto Final


🧩 Semana 12 – Execução de Comandos e Robustez


🧪 Aula 23 – Módulo subprocess

🎯 Objetivos

  • Executar comandos do sistema operacional via Python

  • Integrar scripts Python com ferramentas de infraestrutura


📚 Conteúdo

  • Diferença entre os.system() e subprocess

  • Uso de:

    • subprocess.run()

    • captura de saída (stdout)

    • tratamento de erros


💻 Exemplo Didático

import subprocess

# Executando comando uptime
resultado = subprocess.run(["uptime"], capture_output=True, text=True)

print("Saída do sistema:")
print(resultado.stdout)

🧠 Explicação

  • capture_output=True → captura saída

  • text=True → saída em string

  • Mais seguro e controlado que os.system()


💻 Exemplo aplicado (infraestrutura)

import subprocess

# Verificar espaço em disco
resultado = subprocess.run(["df", "-h"], capture_output=True, text=True)

print(resultado.stdout)

✅ Validação

  • Deve retornar tabela de uso de disco

  • Testar no Linux Mint


🧪 Aula 24 – Tratamento de Exceções


🎯 Objetivos

  • Tornar scripts robustos

  • Evitar falhas silenciosas


📚 Conteúdo

  • try, except, finally

  • Tratamento de erros reais


💻 Exemplo Prático (Manutenção de Serviço)

📌 Problema:

Reiniciar serviço e registrar erro caso falhe


import subprocess
from datetime import datetime

def reiniciar_servico(servico):
    try:
        resultado = subprocess.run(
            ["systemctl", "restart", servico],
            check=True,
            capture_output=True,
            text=True
        )
        print(f"Serviço {servico} reiniciado com sucesso.")

    except subprocess.CalledProcessError as erro:
        print(f"Erro ao reiniciar {servico}.")

        # Registrar erro em log
        with open("erros.log", "a") as log:
            data = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            log.write(f"{data} - Falha ao reiniciar {servico}\n")

# Execução
reiniciar_servico("ssh")

🧠 Explicação

  • check=True → lança exceção em erro

  • except captura falha

  • Log persistente → prática profissional


⚠ Validação

  • Testar com serviço inexistente para simular erro

  • Verificar criação do arquivo erros.log


🧩 Semanas 13 a 16 – Projeto Final


🎯 Projeto: Script de Manutenção Automatizada


📌 Objetivo Geral

Desenvolver um script completo que integre:

  1. Leitura de IPs (arquivos + listas)

  2. Verificação de disco (subprocess + decisão)

  3. Backup (shutil/zip)

  4. Relatório final (strings + arquivos)


🧠 Competências trabalhadas

  • Estruturas de dados (listas/dicionários)

  • Modularização

  • Automação

  • Manipulação de arquivos

  • Integração com SO


🧪 Aula 25 – Leitura de IPs (Base do sistema)

def ler_ips(arquivo):
    with open(arquivo, "r") as f:
        ips = [linha.strip() for linha in f]
    return ips

# Teste
ips = ler_ips("ips.txt")
print(ips)

🧠 Conceitos

  • Vetores (listas)

  • Arquivos

  • Limpeza de dados (strip())


🧪 Aula 26 – Verificação de Disco

import subprocess

def verificar_disco():
    resultado = subprocess.run(["df", "-h", "/"], capture_output=True, text=True)
    return resultado.stdout

🧠 Conceitos

  • Integração com sistema

  • Captura de saída


🧪 Aula 27 – Parsing do resultado

def extrair_uso_disco(saida):
    linhas = saida.split("\n")
    if len(linhas) > 1:
        return linhas[1]
    return "Erro"


🧪 Aula 28 – Backup de Configurações

import shutil
import datetime

def realizar_backup(origem):
    data = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
    destino = f"backup_{data}"
    
    shutil.copytree(origem, destino)
    
    return destino

🧠 Conceitos

  • Automação de backup

  • Organização temporal


🧪 Aula 29 – Compactação

import shutil

def compactar_backup(pasta):
    shutil.make_archive(pasta, 'zip', pasta)


🧪 Aula 30 – Geração de Relatório

def gerar_relatorio(dados):
    with open("relatorio.txt", "w") as f:
        for linha in dados:
            f.write(linha + "\n")


🧪 Aula 31 – Integração do Sistema

def main():
    relatorio = []

    ips = ler_ips("ips.txt")
    relatorio.append("IPs monitorados:")
    relatorio.extend(ips)

    disco = verificar_disco()
    uso = extrair_uso_disco(disco)
    relatorio.append("\nUso de disco:")
    relatorio.append(uso)

    backup = realizar_backup("/etc")
    compactar_backup(backup)

    relatorio.append(f"\nBackup realizado em: {backup}.zip")

    gerar_relatorio(relatorio)

if __name__ == "__main__":
    main()


🧪 Aula 32 – Testes e Validação

🎯 Atividades

  • Testar com:

    • arquivo de IPs real

    • diretório de backup

  • Validar:

    • geração de relatório

    • criação do backup

    • execução sem erro


📊 Critérios de Avaliação


✔ Funcionalidade (40%)

  • Script executa corretamente

✔ Estrutura (20%)

  • Uso de funções

  • Modularização

✔ Clareza (20%)

  • Código legível

  • Comentários

✔ Aplicação prática (20%)

  • Aderência ao contexto de redes


📌 Considerações Pedagógicas


✔ Integração total da ementa

Conteúdo Aplicação no projeto
Vetores Lista de IPs
Matrizes Processamento de saída
Registros (possível extensão)
Funções Estrutura principal
Arquivos Entrada e saída

✔ Progressão final

  • Do básico → sistema funcional completo

  • Aluno passa de executor → desenvolvedor


✔ Fundamentação

  • Manipulação de arquivos →

  • Automação real →


📌 Encerramento do Curso

Este módulo consolida:

  • Lógica de programação

  • Estruturas de dados

  • Automação real

  • Integração com sistema operacional


Fim da aula 05

Click to listen highlighted text!