📘 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()esubprocess -
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 -
exceptcaptura 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:
-
Leitura de IPs (arquivos + listas)
-
Verificação de disco (subprocess + decisão)
-
Backup (shutil/zip)
-
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
