Bash & Scripts Úteis
Git — dia a dia
git clone https://github.com/user/repo.git
git status
git add .
git commit -m "mensagem"
git push origin main
git pull origin main
git checkout -b nova-feature # criar branch
git merge nova-feature
git log --oneline --graph
git reset --soft HEAD~1 # desfaz último commit, mantém arquivos
git diff
Docker — essenciais
docker ps -a
docker start / stop nome_container
docker exec -it nome_container bash
docker logs -f nome_container
docker images
docker rm nome_container
docker rmi nome_imagem
docker system prune -a # limpa tudo que não está em uso
docker stats
docker inspect nome_container
Operação da stack Zabbix/Grafana em Docker.
Proxmox — CLI
qm list # VMs
qm start / stop / reboot 100
qm snapshot 100 snap1 --description "antes da atualização"
qm rollback 100 snap1
pct list # containers LXC
pct enter 101
pvecm status # cluster
pvesm status # storage
vzdump 100 --compress zstd --storage local # backup
nmap — scanner de rede
nmap -sn 192.168.1.0/24 # hosts ativos (ping scan)
nmap 192.168.1.1 # portas comuns
nmap -p- 192.168.1.1 # todas as portas
nmap -sV -O 192.168.1.1 # versão + OS
nmap -F 192.168.1.0/24 # rápido (top 100)
nmap --script vuln 192.168.1.1 # scripts de vulnerabilidade
nmap -oN resultado.txt 192.168.1.0/24
iptables — referência rápida
| Opção | Função | Exemplo |
|---|---|---|
-A |
Adiciona regra ao fim da cadeia | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
-I |
Insere em posição específica | iptables -I INPUT 1 -s 192.168.1.10 -j DROP |
-D |
Remove regra | iptables -D INPUT -p tcp --dport 22 -j ACCEPT |
-L |
Lista regras | iptables -L -v -n |
-F |
Limpa todas as regras | iptables -F INPUT |
-P |
Política padrão | iptables -P INPUT DROP |
-t nat |
Tabela NAT | iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
Firewall básico completo:
# Limpa regras antigas
iptables -F; iptables -t nat -F; iptables -t mangle -F
# Políticas padrão
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Loopback e conexões estabelecidas
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH e bloqueio de Telnet
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 23 -j DROP
# NAT de saída
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Salvar
iptables-save > /etc/iptables/rules.v4
Automação de rede em Python (NAPALM)
Biblioteca multi-vendor (Cisco, Juniper, Arista) para coletar dados e configs:
from napalm import get_network_driver
driver = get_network_driver('ios') # ios | iosxr | nxos_ssh | junos | eos
device = driver(hostname='192.168.1.1', username='admin', password='***', timeout=30)
device.open()
facts = device.get_facts()
print(facts['hostname'], facts['model'], facts['os_version'])
for name, data in device.get_interfaces().items():
print(name, 'UP' if data['is_up'] else 'DOWN', f"{data['speed']}Mbps")
print(device.get_config(retrieve='running')['running'])
device.close()
Para SSH multi-vendor incluindo MikroTik, a biblioteca Netmiko complementa o NAPALM.
Modelo de script Bash com argumentos
#!/usr/bin/env bash
set -euo pipefail
# Uso:
# ./script.sh <inicio> [fim]
# ./script.sh 3000 3500
INICIO="${1:?informe o valor inicial}"
FIM="${2:-$INICIO}"
for n in $(seq "$INICIO" "$FIM"); do
echo "Processando $n..."
done