← SASE DIFFNOVA CONFIGURAÇÃO · PC NATIVO

SE CIANORTE · SASE 6.5.0.0 · PLS3

Guia de importação no SASE físico

Procedimento sequencial para copiar, conferir, instalar e restaurar a configuração no computador que executa o SASE diretamente em Linux.

SASE→WAGO CC100→Equipamentos
!
Nenhuma manobra faz parte deste procedimento

Não use Alt+C, não digite CG 01 e não selecione A=ABRIR ou F=FECHAR. Se uma janela de telecomando surgir por engano, pressione somente Esc.

00

ESCOPO CORRIGIDO

O destino é um computador físico

O SASE local da SE Cianorte não está virtualizado: ele executa o SASE 6.5.0.0/PLS3 diretamente em Linux. Quando este guia mencionar Windows ou PowerShell, trata-se somente do notebook de manutenção.

Não use o pacote HYPERV no PC de campo

A versão anterior desativava o watchdog físico e o NTP para atender à máquina virtual de laboratório. O pacote desta página é um overlay para PC nativo: ele não contém nem substitui coeinitr.pls3, funcoes.pls3, gpsinit.pls3 ou relatorios.pls3.

CONDIÇÃO PARA CONTINUAR

Os quatro arquivos nativos do PC precisam coincidir com a base padrão indicada no passo 05. Se qualquer hash diferir, pare e envie um backup atual do diretório pls3 à engenharia; não adapte arquivos manualmente.

01

REGRAS OBRIGATÓRIAS

Proteções durante a importação

  • Obter janela autorizada para indisponibilidade do PC SASE e manter um operador diante do console físico.
  • Confirmar no CODESYS, sem force nem escrita, xEnableDjCommands=FALSE no WAGO.
  • Não editar manualmente arquivos .ban, .img, .est, .dnp, .can ou .uni.
  • Executar uma linha por vez. Se qualquer resultado divergir, parar antes da árvore ativa.
  • Não testar CG 01, não energizar saída e não validar comando durante esta atividade.
02

ARQUIVO DE ENTREGA

Identificar o overlay do PC nativo

ARQUIVOsase_pls3_wago_centralizado_PC_NATIVO_OVERLAY_FINAL_COMANDO_CG_01_20260831.tgzSHA-256474FB62F97FDD57563B2F22C82E41ED3BC2C7322ADC56984186245A22F31618EMD5 NO SASE2BC33B63A41E19445C95318282352016

O TGZ contém exatamente 9 arquivos. A árvore ativa final terá 13 arquivos: os 9 entregues e os 4 scripts preservados do próprio PC.

No notebook de manutenção · PowerShell:

Get-FileHash -Algorithm SHA256 "C:\CAMINHO\sase_pls3_wago_centralizado_PC_NATIVO_OVERLAY_FINAL_COMANDO_CG_01_20260831.tgz"
Resultado esperado

O hash precisa ser 474FB62F97FDD57563B2F22C82E41ED3BC2C7322ADC56984186245A22F31618E. Se for diferente, não use o arquivo.

03

CAMINHO A

Importar com pendrive

  1. Preparar no notebook.

    Use pendrive FAT32 com uma única partição. Copie o TGZ para a raiz, confira o SHA-256 e ejete com segurança.

  2. No terminal root do SASE, registrar o estado antes de inserir.
    cat /proc/partitions
    cat /proc/partitions > /tmp/partitions_antes_usb.txt
  3. Inserir e identificar somente o dispositivo novo.
    dmesg | tail -30
    cat /proc/partitions
    Nunca escolha um disco por tentativa. Monte somente a nova partição que aparece ao mesmo tempo no dmesg e em /proc/partitions. Se não houver correspondência inequívoca, pare.
  4. Montar somente para leitura.

    No exemplo abaixo, substitua /dev/sdX1 pela partição nova realmente observada.

    USB_SASE=/dev/sdX1
    test -b "$USB_SASE" && echo DISPOSITIVO_CONFIRMADO
    mkdir -p /mnt/pendrive_sase
    mount -t vfat -o ro "$USB_SASE" /mnt/pendrive_sase
    ls -l /mnt/pendrive_sase/sase_pls3_wago_centralizado_PC_NATIVO_OVERLAY_FINAL_COMANDO_CG_01_20260831.tgz
    md5sum /mnt/pendrive_sase/sase_pls3_wago_centralizado_PC_NATIVO_OVERLAY_FINAL_COMANDO_CG_01_20260831.tgz
    Resultado esperado

    Deve aparecer DISPOSITIVO_CONFIRMADO e MD5 2bc33b63a41e19445c95318282352016.

  5. Copiar para a área temporária e desmontar.
    cp -p /mnt/pendrive_sase/sase_pls3_wago_centralizado_PC_NATIVO_OVERLAY_FINAL_COMANDO_CG_01_20260831.tgz /tmp/
    sync
    md5sum /tmp/sase_pls3_wago_centralizado_PC_NATIVO_OVERLAY_FINAL_COMANDO_CG_01_20260831.tgz
    cd /
    umount /mnt/pendrive_sase
    mount | grep pendrive_sase || true

    Retire o pendrive somente quando o último comando não mostrar linha alguma.

Se a montagem falhar

Não formate, não crie partição e não tente outro disco. Siga o caminho “Sem pendrive”.

04

CAMINHO B

Importar sem montar o pendrive

Opção preferencial · SCP pela rede de manutenção

No PowerShell do notebook, informe somente o IP de manutenção confirmado para o PC físico. Não use 192.168.250.2 como padrão: esse endereço pertencia ao laboratório.

$ipSase = "SUBSTITUIR_PELO_IP_CONFIRMADO"
scp -O -o "HostKeyAlgorithms=+ssh-rsa" -o "KexAlgorithms=+diffie-hellman-group1-sha1" -o "MACs=hmac-sha1" -c aes128-cbc "C:\CAMINHO\sase_pls3_wago_centralizado_PC_NATIVO_OVERLAY_FINAL_COMANDO_CG_01_20260831.tgz" "root@${ipSase}:/tmp/"

Confirme a impressão digital já conhecida do host. Se ela mudar ou for desconhecida, pare; não remova entradas de known_hosts.

Alternativa sem rede e sem mídia · somente terminal local

Há um procedimento separado para reconstruir o overlay linha a linha no próprio terminal, com UUEncode e verificação obrigatória do MD5. Ele não edita os arquivos binários do SASE com vi.

05

ETAPAS COMUNS · TERMINAL ROOT DO SASE

Pré-validar o PC e o pacote

1. Registrar sistema, espaço, processos e metadados

uname -a
date
df -k / /tmp /root /etc/opt /var/opt
ls -ldn /etc/opt/sase-6.5.0.0/pls3 /var/opt/pls3
ps ax | grep -i -E 'canpger[.]exe|dnppger[.]exe|ihmpger[.]exe|coe[.]exe'
netstat -tn 2>/dev/null | grep ':20000' || true

Não continue se não houver espaço suficiente para o backup, a árvore nova e uma cópia de retorno.

2. Confirmar a base nativa que será preservada

cd /etc/opt/sase-6.5.0.0/pls3
md5sum coeinitr.pls3 funcoes.pls3 gpsinit.pls3 relatorios.pls3
Resultado esperado
  • eeff0506f3934f5cb9514f4122cc9d37  coeinitr.pls3
  • b18c85c234a5c9a2aaab0f86f7149560  funcoes.pls3
  • 49d7dba85252ba0c25e5f1cfa02ab811  gpsinit.pls3
  • 135efaf0c6bcbba52d18aee34fa3b91d  relatorios.pls3
Qualquer hash diferente bloqueia esta entrega

Faça backup do PC e envie-o à engenharia para gerar um overlay específico. Não substitua watchdog ou NTP por arquivos do laboratório.

3. Extrair o overlay fora da árvore ativa

cd /tmp
md5sum sase_pls3_wago_centralizado_PC_NATIVO_OVERLAY_FINAL_COMANDO_CG_01_20260831.tgz
tar -tzf sase_pls3_wago_centralizado_PC_NATIVO_OVERLAY_FINAL_COMANDO_CG_01_20260831.tgz
mkdir -p /root/sase_imports
IMPORT_SASE=/root/sase_imports/import_cianorte_$(date +%Y%m%d_%H%M%S)
mkdir -m 700 "$IMPORT_SASE" "$IMPORT_SASE/extracted" "$IMPORT_SASE/runtime"
echo "$IMPORT_SASE" > /root/sase_imports/IMPORT_SASE_ATUAL.txt
tar -xzf /tmp/sase_pls3_wago_centralizado_PC_NATIVO_OVERLAY_FINAL_COMANDO_CG_01_20260831.tgz -C "$IMPORT_SASE/extracted"
OVERLAY_SASE="$IMPORT_SASE/extracted/etc/opt/sase-6.5.0.0/pls3"
find "$OVERLAY_SASE" -maxdepth 1 -type f | wc -l
ls -ln "$OVERLAY_SASE"
Resultado esperado

MD5 2bc33b63a41e19445c95318282352016 e exatamente 9 arquivos. Todos os caminhos do TGZ devem começar por etc/opt/sase-6.5.0.0/pls3/.

4. Executar o consiste.exe isoladamente

cd "$OVERLAY_SASE"
export VERSAO_SASE=6.5.0.0
export ESTACAO=pls3
export PATH=/opt/sase-6.5.0.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
printf '\n' | /opt/sase-6.5.0.0/bin/consiste.exe -o "$IMPORT_SASE/runtime" rpls3.ban > "$IMPORT_SASE/consiste.txt" 2>&1
cat "$IMPORT_SASE/consiste.txt"
md5sum "$OVERLAY_SASE/rpls3.img" "$IMPORT_SASE/runtime/rpls3.img"
Resultado esperado
  • Arquivo rpls3.ban OK!
  • Arquivo de imagem OK!
  • 44 analógicos, 128 estados e 2 comandos
  • As duas imagens com MD5 5fc1d62ad4de75c119e9476683dc4a0f

5. Confirmar que o SASE usa somente o WAGO

grep -H '^[*] CONEXAO =' "$OVERLAY_SASE"/*.can
grep -n -E '192[.]168[.]1[.](11|40|50)' "$OVERLAY_SASE"/* || true
Resultado esperado

Somente rpls3c01.can:* CONEXAO = 192.168.1.28 20000 1 01. O segundo comando não deve mostrar linha alguma.

06

PONTO DE RETORNO

Fazer backup e montar a nova árvore

1. Backup integral antes da indisponibilidade

IMPORT_SASE=$(cat /root/sase_imports/IMPORT_SASE_ATUAL.txt)
OVERLAY_SASE="$IMPORT_SASE/extracted/etc/opt/sase-6.5.0.0/pls3"
test -d "$OVERLAY_SASE" && echo IMPORTACAO_LOCALIZADA
mkdir -p /root/sase_backups
BKP_SASE=/root/sase_backups/pls3_antes_importacao_$(date +%Y%m%d_%H%M%S)
mkdir -m 700 "$BKP_SASE"
tar -czpf "$BKP_SASE/etc_pls3.tgz" -C /etc/opt/sase-6.5.0.0 pls3
tar -czpf "$BKP_SASE/var_pls3.tgz" -C /var/opt pls3
md5sum /etc/opt/sase-6.5.0.0/pls3/coeinitr.pls3 /etc/opt/sase-6.5.0.0/pls3/funcoes.pls3 /etc/opt/sase-6.5.0.0/pls3/gpsinit.pls3 /etc/opt/sase-6.5.0.0/pls3/relatorios.pls3 /etc/ntp.conf > "$BKP_SASE/base_nativa.md5"
ps ax > "$BKP_SASE/processos_antes.txt"
netstat -tn 2>/dev/null | grep ':20000' > "$BKP_SASE/conexoes_antes.txt" || true
cp -p /tmp/sase_pls3_wago_centralizado_PC_NATIVO_OVERLAY_FINAL_COMANDO_CG_01_20260831.tgz "$BKP_SASE/"
cp -p "$IMPORT_SASE/consiste.txt" "$BKP_SASE/"
echo "$BKP_SASE" > /root/sase_backups/ULTIMO_BACKUP_PLS3.txt
test -s "$BKP_SASE/etc_pls3.tgz" && test -s "$BKP_SASE/var_pls3.tgz" && echo BACKUPS_PRESENTES
Resultado esperado

IMPORTACAO_LOCALIZADA e BACKUPS_PRESENTES. Anote ou fotografe o caminho mostrado por cat /root/sase_backups/ULTIMO_BACKUP_PLS3.txt.

2. Montar uma árvore limpa preservando a base física

ATIVO_SASE=/etc/opt/sase-6.5.0.0/pls3
RUNTIME_SASE=/var/opt/pls3
TAG_SASE=$(date +%Y%m%d_%H%M%S)
echo "$TAG_SASE" > /root/sase_imports/TAG_SASE_ATUAL.txt
NOVO_ATIVO=/etc/opt/sase-6.5.0.0/pls3.novo_$TAG_SASE
ANTIGO_ATIVO=/etc/opt/sase-6.5.0.0/pls3.antes_$TAG_SASE
NOVO_RUNTIME=$RUNTIME_SASE/rpls3.img.novo_$TAG_SASE
ANTIGO_RUNTIME=$RUNTIME_SASE/rpls3.img.antes_$TAG_SASE
mkdir -m 755 "$NOVO_ATIVO"
cp -p "$ATIVO_SASE/coeinitr.pls3" "$ATIVO_SASE/funcoes.pls3" "$ATIVO_SASE/gpsinit.pls3" "$ATIVO_SASE/relatorios.pls3" "$NOVO_ATIVO/"
cp -p "$OVERLAY_SASE"/* "$NOVO_ATIVO/"
cp -p "$IMPORT_SASE/runtime/rpls3.img" "$NOVO_RUNTIME"
cp -p "$RUNTIME_SASE/rpls3.img" "$ANTIGO_RUNTIME"
find "$NOVO_ATIVO" -maxdepth 1 -type f | wc -l
md5sum "$NOVO_ATIVO/coeinitr.pls3" "$NOVO_ATIVO/funcoes.pls3" "$NOVO_ATIVO/gpsinit.pls3" "$NOVO_ATIVO/relatorios.pls3"
md5sum "$NOVO_ATIVO/rpls3.img" "$NOVO_RUNTIME"
Resultado esperado

Exatamente 13 arquivos; os quatro hashes nativos iguais ao passo 05; as duas imagens com MD5 5fc1d62ad4de75c119e9476683dc4a0f.

A árvore é criada vazia e recebe apenas os quatro scripts do PC e os nove arquivos do overlay. Por isso canais antigos c02+, CIDIS e referências diretas não são carregados.

07

ATIVAÇÃO NO PC FÍSICO

Parar a aplicação, promover a árvore e reiniciar

Este passo interrompe a supervisão

Execute somente na janela autorizada, com acesso ao console local e backup validado. O reboot é do computador físico, não de uma máquina virtual.

1. Parar pelo runlevel padrão e confirmar

sync
telinit 3

A interface pode fechar. Entre novamente como root no console físico e recupere os caminhos salvos:

IMPORT_SASE=$(cat /root/sase_imports/IMPORT_SASE_ATUAL.txt)
TAG_SASE=$(cat /root/sase_imports/TAG_SASE_ATUAL.txt)
ATIVO_SASE=/etc/opt/sase-6.5.0.0/pls3
RUNTIME_SASE=/var/opt/pls3
NOVO_ATIVO=/etc/opt/sase-6.5.0.0/pls3.novo_$TAG_SASE
ANTIGO_ATIVO=/etc/opt/sase-6.5.0.0/pls3.antes_$TAG_SASE
NOVO_RUNTIME=$RUNTIME_SASE/rpls3.img.novo_$TAG_SASE
ANTIGO_RUNTIME=$RUNTIME_SASE/rpls3.img.antes_$TAG_SASE
sleep 5
ps ax | grep -i -E 'canpger[.]exe|dnppger[.]exe|ihmpger[.]exe|coe[.]exe' || true

Não continue se algum processo do SASE permanecer ativo. Não use kill por tentativa.

2. Promover com retorno automático em caso de erro

sh -c '
set -e
ATIVO="$1"; NOVO="$2"; ANTIGO="$3"; RUNTIME="$4"; NOVO_RT="$5"; ANTIGO_RT="$6"
mv "$ATIVO" "$ANTIGO"
if mv "$NOVO" "$ATIVO" && cp -p "$NOVO_RT" "$RUNTIME/rpls3.img"; then
  echo INSTALACAO_OK
else
  [ -d "$ATIVO" ] && mv "$ATIVO" "$ATIVO.falha"
  mv "$ANTIGO" "$ATIVO"
  cp -p "$ANTIGO_RT" "$RUNTIME/rpls3.img"
  echo FALHA_RESTAURADA
  exit 1
fi
' sh "$ATIVO_SASE" "$NOVO_ATIVO" "$ANTIGO_ATIVO" "$RUNTIME_SASE" "$NOVO_RUNTIME" "$ANTIGO_RUNTIME"

Somente depois de aparecer INSTALACAO_OK, confira os arquivos promovidos:

sync
md5sum "$ATIVO_SASE/rpls3.img" "$RUNTIME_SASE/rpls3.img"
grep -H '^[*] CONEXAO =' "$ATIVO_SASE"/*.can
Resultado esperado
  • INSTALACAO_OK
  • As duas imagens: 5fc1d62ad4de75c119e9476683dc4a0f
  • Somente 192.168.1.28:20000

Se aparecer FALHA_RESTAURADA ou qualquer outro erro, não reinicie e acione a engenharia.

3. Reiniciar o computador físico

sync
/sbin/shutdown -r now

Acompanhe o POST, a inicialização do Linux e a carga completa do SASE. Se não retornar, não faça sucessivos ciclos de energia.

4. Conferência passiva após o boot

sleep 60
BKP_SASE=$(cat /root/sase_backups/ULTIMO_BACKUP_PLS3.txt)
md5sum -c "$BKP_SASE/base_nativa.md5"
date
ps ax | grep -i -E 'canpger[.]exe|dnppger[.]exe|ihmpger[.]exe|coe[.]exe'
grep -H '^[*] CONEXAO =' /etc/opt/sase-6.5.0.0/pls3/*.can
netstat -tn 2>/dev/null | grep '192[.]168[.]1[.]28:20000' | grep -i ESTABLISHED || true
netstat -tn 2>/dev/null | grep -E '192[.]168[.]1[.](11|40|50):20000' || true
  • Todos os hashes da base nativa e de /etc/ntp.conf mostram OK.
  • Somente canpger.exe 1 e dnppger.exe 1; nenhuma instância de canal 2.
  • Uma sessão estabelecida com 192.168.1.28:20000; nenhuma sessão com .11, .40 ou .50.
  • Tela com WAGO, 11 inversores, Siemens, transformador e meteorologia atualizando.
  • Tensões, frequência e precipitação com uma casa decimal; acumulados diários com duas.
  • Texto P/COMANDAR CG 01, A=ABRIR e F=FECHAR visível, sem abrir o menu.
Validação visual somente

Não use Alt+C e não digite CG 01.

08

SE ALGO DIFERIR

Retorno por árvores limpas

Não extraia o backup por cima da configuração nova. Prepare cópias limpas e promova-as somente após validar os dois arquivos.

BKP_RETORNO=$(cat /root/sase_backups/ULTIMO_BACKUP_PLS3.txt)
test -s "$BKP_RETORNO/etc_pls3.tgz" && test -s "$BKP_RETORNO/var_pls3.tgz" && echo BACKUPS_PRESENTES
tar -tzf "$BKP_RETORNO/etc_pls3.tgz"
tar -tzf "$BKP_RETORNO/var_pls3.tgz"
TAG_RETORNO=$(date +%Y%m%d_%H%M%S)
RESTORE_SASE=/root/sase_restore/$TAG_RETORNO
mkdir -p "$RESTORE_SASE/etcbase" "$RESTORE_SASE/varbase"
echo "$TAG_RETORNO" > /root/sase_restore/TAG_RETORNO_ATUAL.txt
tar -xzpf "$BKP_RETORNO/etc_pls3.tgz" -C "$RESTORE_SASE/etcbase"
tar -xzpf "$BKP_RETORNO/var_pls3.tgz" -C "$RESTORE_SASE/varbase"
test -d "$RESTORE_SASE/etcbase/pls3" && test -d "$RESTORE_SASE/varbase/pls3" && echo RESTAURACAO_PREPARADA

Só prossiga com BACKUPS_PRESENTES e RESTAURACAO_PREPARADA. Em janela autorizada:

sync
telinit 3

Entre novamente como root no console físico e recupere a árvore de retorno antes de promover:

TAG_RETORNO=$(cat /root/sase_restore/TAG_RETORNO_ATUAL.txt)
RESTORE_SASE=/root/sase_restore/$TAG_RETORNO
sleep 5
ps ax | grep -i -E 'canpger[.]exe|dnppger[.]exe|ihmpger[.]exe|coe[.]exe' || true
sh -c '
set -e
RESTORE="$1"; TAG="$2"
ATIVO=/etc/opt/sase-6.5.0.0/pls3; ATIVO_FALHA=/etc/opt/sase-6.5.0.0/pls3.falha_$TAG
RUNTIME=/var/opt/pls3; RUNTIME_FALHA=/var/opt/pls3.falha_$TAG
mv "$ATIVO" "$ATIVO_FALHA"
if mv "$RESTORE/etcbase/pls3" "$ATIVO"; then
  mv "$RUNTIME" "$RUNTIME_FALHA"
  if mv "$RESTORE/varbase/pls3" "$RUNTIME"; then echo RESTAURACAO_OK; exit 0; fi
  mv "$RUNTIME_FALHA" "$RUNTIME"
fi
[ -d "$ATIVO" ] && mv "$ATIVO" "$ATIVO.restore_falha"
mv "$ATIVO_FALHA" "$ATIVO"
echo FALHA_RESTAURADA
exit 1
' sh "$RESTORE_SASE" "$TAG_RETORNO"

Reinicie somente se aparecer RESTAURACAO_OK. Se aparecer FALHA_RESTAURADA, não reinicie e acione a engenharia.

sync
/sbin/shutdown -r now

Depois do boot, repita a conferência de processos, conexões, tela e NTP.

09

ENCERRAMENTO

Registro obrigatório da atividade

  • Nome do operador, data, horário e identificação do PC SASE.
  • SHA-256 e MD5 do overlay conferidos.
  • Hashes dos quatro scripts nativos e de /etc/ntp.conf antes/depois.
  • Caminho completo do backup.
  • Resultado do consiste.exe: 44 analógicos, 128 estados e 2 comandos.
  • Confirmação da conexão exclusiva SASE → WAGO e de zero sessões diretas.
  • Resultado da conferência visual e eventual rollback.
FIM DO PROCEDIMENTOManter o backup e as árvores de quarentena até o aceite formal.