Unidade 9 / 11

Geração de scripts e automação: Bash, Python e PowerShell

Ganhos:

  • Capacidade de compreender os pontos fortes do Bash, Python e PowerShell e fazer com que a inteligência artificial produza rascunhos de script seguros e protegidos
  • Capacidade de adicionar proteções a scripts como set -euo pipefail, verificação de variáveis vazias, modo de simulação e registro
  • Capacidade de ler comandos destrutivos e testá-los em um ambiente isolado e com simulação primeiro, e de aplicar a disciplina de não incorporar o segredo no script.

O espírito do DevOps se resume em uma frase: “Automatize o trabalho que você faz duas vezes”. Qualquer tarefa repetitiva feita manualmente – limpeza de log, realização de backup, verificação de integridade do servidor, processamento de arquivos em lote – leva tempo e acaba sendo corrompida por erro humano. Os scripts assumem essas tarefas: pequenos programas que executam uma série de comandos de maneira sequencial, confiável e repetível. O profissional DevOps frequentemente usa três linguagens: Bash (para scripts de shell Linux/Unix), Python (para lógica complexa, chamada de API, manipulação de dados) e PowerShell (para Windows e gerenciamento de nuvem).

A IA é talvez onde oferece o valor mais prático na geração de scripts: produzindo um rascunho de trabalho a partir de uma descrição de uma frase, resolvendo um bug misterioso, traduzindo um script para outro idioma. Mas um script é perigoso quando executado às cegas - um rm errado, um Remove-Item -Recurse excluirá arquivos irreversivelmente. É por isso que o lema desta unidade é: deixe a IA escrever o script, você o lê, experimente primeiro no modo de segurança e depois execute-o.

Qual idioma escolher e quando? Uma regra geral: se o trabalho consiste em executar vários comandos do sistema seguidos (copiar arquivo, reiniciar serviço, recuperar arquivo), Bash é a escolha mais natural porque o Linux é onipresente nos servidores. Se o trabalho envolve lógica de decisão, looping, transformação de dados, solicitação de API ou processamento JSON – ou seja, lógica superior a 20 linhas – o Python se destaca por sua legibilidade e bibliotecas ricas; Um script Bash complexo rapidamente se torna incompreensível, enquanto o Python permanece fácil de manter. Se o trabalho envolver o gerenciamento de servidores Windows, Active Directory ou Azure, o PowerShell é o ambiente natural porque sua natureza orientada a objetos se integra profundamente a essas plataformas. Especificar qual idioma você escolheu e por que ao solicitar um script para a IA garante que a saída seja apropriada e idiomática para o seu ambiente.

Passo a passo: geração segura de scripts

  1. Descreva a tarefa e o ambiente. O que fará, qual sistema operacional/shell, quais restrições?
  2. Peça grades de segurança. No bash, defina -euo pipefail (parar em caso de erro, parar em variável indefinida), prompt de confirmação para operações perigosas, mover primeiro em vez de excluir.
  3. Solicite o modo de simulação. Deixe o script escrever o que fazer com --dry-run, mas não faça isso.
  4. Leia e entenda. Verifique o que cada linha faz, especialmente operações de exclusão/mover/rede.
  5. Experimente em um ambiente isolado. Na pasta de teste, execute-o com dados de amostra.
  6. Adicione ao registro. Deixe o script registrar o que faz para que possa ser visualizado mais tarde.

Fundamentos de scripts seguros

Um script de produção deve incluir estas proteções:

  • Parando em caso de erro. Bash: defina -euo pipefail. PowerShell: $ErrorActionPreference = 'Parar'. Se uma etapa falhar, as próximas não deverão funcionar.
  • Idempotência (repetibilidade). Se o script for executado duas vezes, ele não deverá causar dano duplo; Lógica "Se você já tem, pule".
  • Aprovação e simulação. Para operações destrutivas "tem certeza?" ou o sinalizador --dry-run.
  • Validação de entrada. Os parâmetros estão conforme o esperado? Uma variável vazia pode transformar rm -rf "$DIR"/ em rm -rf / desastre.
  • Registro. Registro do que foi feito e quando.
Dica: O erro mais perigoso no Bash é excluir com uma variável vazia. rm -rf "$DIR" tenta excluir o diretório raiz se $DIR estiver vazio. set -u (parar na variável indefinida) e verificar [ -n "$DIR" ] antes de excluir é um salva-vidas. Solicite explicitamente essas proteções ao solicitar scripts da IA.

Segurança: comandos secretos e destrutivos

Dois grandes perigos:

  1. Incorporando o segredo no script. A senha não deve ser texto simples no script do token; Deve ser lido da variável de ambiente ou do cofre. Os scripts vão para o Git; segredo enterrado é vazamento permanente.
  2. Comandos destrutivos. rm -rf, Remove-Item -Recurse -Force, DROP TABLE, terraform destroy — quando você vir isso em um script, pare e pense duas vezes. Nunca tente primeiro o comando destrutivo gerado pela IA no prod.
Cuidado: quando você diz à IA para "escrever um script que limpe esses arquivos", leia atentamente o escopo do comando find ... -delete ou rm que ele produz. Um curinga (*) ou o caminho errado excluirá mais do que você deseja excluir. Sempre execute o script primeiro com o modo "lista para excluir" em vez de excluir.

Comparação de três idiomas

critério

festa

Pitão

PowerShell

Onde é melhor

Shell Linux, cadeia de comando

Lógica complexa, API, dados

Gerenciamento de nuvem do Windows

Curva de aprendizado

Médio (preso)

fácil

médio

Tratamento de erros

definir -euo pipefail

tentar/exceto

tentar/capturar, -ErrorAction

portabilidade

Unix/Linux/Mac

em todos os lugares

Plataforma cruzada (PS 7+)

quando

Resumindo, o sistema funciona

Lógica com mais de 20 linhas

Windows/AD/Azure

três mini cases

Caso 1 – 2 horas de artesanato em 5 minutos. Um engenheiro gastava 2 horas coletando e arquivando logs de 40 servidores todas as semanas. Ele fez com que a IA descrevesse a tarefa e definisse -euo pipefail + proteções contra simulação e gerasse um script Bash. Primeiro validei o script com simulação e, em seguida, vinculei-o à tarefa agendada (cron). O trabalho semanal é reduzido para 5 minutos e o erro humano é eliminado.

Caso 2 – desastre de variável nula evitado. Havia rm -rf "$TARGET"/* no script de limpeza produzido pela IA, mas se TARGET não fosse atribuído a algum lugar, ele permaneceria vazio. Ele percebeu isso enquanto estudava engenheiro; definir -u e [ -n "$TARGET" ] || adicionado controle de saída 1. Durante o teste, a variável permaneceu nula e o script parou de forma segura e não catastrófica.

Caso 3 — token incorporado capturado. Por conveniência, a AI adicionou uma linha TOKEN = "ghp_realtoken" a um script Python que solicita uma API (como exemplo). O engenheiro removeu isso e alterou para leitura da variável de ambiente com os.environ["TOKEN"] e cancelou e renovou o token. Se o script fosse para o Git, o token seria público.

Quatro modelos copiáveis

1) Script Bash seguro:

Escreva um script Bash: [TASK]. Regras obrigatórias:- `set -euo pipefail` no início.- Verifique se a variável não está vazia sempre que for deletar/mover.- Sinalizador `--dry-run`: escreva o que fazer neste modo, mas não faça.- Não incorpore o segredo; Leia da variável de ambiente. - Imprima log informativo em cada etapa. Comente o roteiro e marque a linha mais perigosa.

2) Descrição/controle do script:

Descreva o seguinte script linha por linha e verifique a segurança: segredo incorporado, comando destrutivo (rm/Remove-Item/DROP), entrada não validada, falta de tratamento de erros? Escreva cada risco em ordem de importância e correção. Roteiro: [CÓDIGO]

3) Tradução de idiomas:

Traduza esse script [SOURCE LANGUAGE] para [TARGET LANGUAGE]. Mantenha o comportamento literalmente, use o tratamento de erros idiomáticos do idioma de destino, mova quaisquer segredos incorporados para uma variável de ambiente. Observe os pontos que podem se comportar de maneira diferente.Script: [CODE]

4) Tarefa planejada (cron/tarefa agendada):

Use este script [FREQUÊNCIA: por ex. Escreva uma definição de agendamento ([cron / systemd timer / Windows Task Scheduler]) que será executada [às 02:00 todas as noites]. Adicione como me avisar em caso de falha (log/código de saída/notificação) e como evitar sobreposição.

Alerta fraco / Alerta forte

Fraco: "Escreva um script que exclua arquivos antigos."

Resultado: um script rm sem escopo, desprotegido e sem execução a seco; Se for executado na pasta errada, será excluído irreversivelmente.

Forte: "Escreva um script bash para excluir arquivos .log com mais de 30 dias em /var/log/app. Use set -euo pipefail, pare se o diretório de destino estiver vazio, liste o que excluir com --dry-run primeiro, registre todas as transações, não incorpore o segredo. Marque a linha mais perigosa."

Diferença: a segunda afirmação fornece o escopo completo, grades de segurança e expectativa de funcionamento a seco; A saída pode ser executada com segurança.

Erros comuns

  • Executando o script sem lê-lo. Excluir/mover linhas em particular leva ao desastre.
  • Não verificando variáveis ​​vazias. Desastre clássico de excluir o diretório raiz com rm -rf "$X"/.
  • pule `set -euo pipefail` / `-ErrorAction Stop`. Uma etapa é disparada, o script continua cegamente.
  • Incorporando o segredo no script. Vazamento persistente para Git.
  • Processo destrutivo sem simulação. Primeiro "mostre-me o que fazer", depois faça.
  • Fazendo a primeira tentativa de produção. Executando sem um ambiente de teste isolado.

Resumindo

DevOps é a arte da automação; O trabalho repetitivo é delegado a scripts Bash, Python e PowerShell. A IA é muito útil na elaboração de scripts, depuração e tradução de idiomas – mas um script seguro deve incluir protetores de erro como set -euo pipefail, verificação de variável nula, modo de simulação, sigilo incorporado e registro. É sua responsabilidade ler e testar cada script, especialmente aqueles que contêm comandos destrutivos, em um ambiente isolado e primeiro executar a simulação.

Tarefa de aplicativo

Escolha uma tarefa recorrente (arquivamento de log, backup, limpeza). (1) Faça com que a IA gere um script protegido com o modelo "Secure Bash script". (2) Verifique a segurança do mesmo script que o modelo "Descrição/auditoria do script" e encontre a linha mais perigosa que a IA sinalizou. (3) Verifique seu comportamento executando o script com arquivos de amostra em uma pasta de teste, primeiro com --dry-run.

lista de verificação

  • [] Eu escrevi a tarefa que não quero, o sistema operacional/shell e as proteções de segurança.
  • [] O script apresenta erros ao parar, como set -euo pipefail / -ErrorAction Stop.
  • [] Adicionei variável vazia e verificação de entrada antes de excluir/mover.
  • [] Existe um mecanismo de simulação/confirmação para operações destrutivas.
  • [] Não há segredo embutido no script; os valores vêm da variável/caso de ambiente.
  • [ ] Fiz o primeiro teste em um ambiente de teste isolado com simulação.