> For the complete documentation index, see [llms.txt](https://docs.editran.onesait.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.editran.onesait.com/documentacion-editran/open-v5.3/linux/versionado_envio_clave_propia.md).

# Ejemplos prácticos

Este procedimiento explica cómo automatizar la generación de una nueva versión de la clave de un subsistema propio y su envío a una selección de remotos utilizando los comandos del producto.

## Requisitos y consideraciones previas

* Planificación\
  La generación de la nueva versión de la clave y su envío a los remotos debe realizarse conforme a un calendario previamente definido.
* Concurrencia con procesos en remotos\
  No debe coincidir con procesos de envío de clave iniciados desde los propios remotos.\
  El procedimiento utiliza la presentación TELEGC para enviar el fichero de exportación de la clave propia. Si un remoto envía su clave en paralelo, estos ficheros pueden sobrescribirse, alterando el flujo y produciendo errores.
* Ámbito\
  Este procedimiento solo aplica a remotos que ya tienen una versión activa de la clave. No es válido para nuevos remotos, ya que no realiza la creación inicial de presentaciones TELEGC.
* Estado previo de la clave\
  Antes de ejecutar el proceso, la clave debe estar activa en todos los remotos listados y no debe existir una nueva versión ya generada.
* Comportamiento ante errores\
  Si falla la generación de la nueva versión de la clave con el primer remoto, el proceso se interrumpe inmediatamente (no hay versión creada; no se puede continuar). En los demás casos, el proceso no se detiene: continúa con el siguiente remoto, registrando en el log tanto operaciones correctas como errores.

## Garantías de la ejecución

* Se debe revisar el log para identificar si existen remotos que han presentado problemas durante la generación de la nueva versión y/o su envío.
* La finalización sin errores en un remoto únicamente acredita que el envío se ha realizado sin incidencias. Es imprescindible verificar manualmente que la nueva versión de la clave esté activa tanto en el sistema local como en todos los remotos.

## Script

A continuación se muestra un ejemplo de script de creación de la nueva versión del subsistema propio N asociado al local L00000010 y su envío a los remotos W00000010 y W00000110.

```bash
#!/bin/bash

# --- Configuración de log ---
LOGFILE="/opt/editran/log/versionadoSubsistema.log"
LOCAL="L00000010"
SUBSISTEMA="N"
NBITS="4096"
REMOTOS=( "W00000010" "W00000110" )
VFIRST="-v"

RET=0

echo "Generando nueva version de subsistema propio ${SUBSISTEMA} …" > "${LOGFILE}"

first=1
for REMOTO in "${REMOTOS[@]}"; do
    echo "" >> "${LOGFILE}"
    echo "Tratando remoto: ${REMOTO}" >> "${LOGFILE}"
    
    if [[ ${first} -eq 1 ]]; then
        first=0
    else
        VFIRST=""
    fi

    # Ejecutar gc_config
    gc_config $VFIRST -k$NBITS -l"${LOCAL}" -r"${REMOTO}" -s"${SUBSISTEMA}" >> "${LOGFILE}" 2>&1
    rc=$?
    sleep 3

    if [[ ${rc} -eq 1 ]]; then
        # Cuando gc_config devuelve 1, realizar envío
        TELEGC="${LOCAL}-${REMOTO}-TELEGC"
        echo "Envio ${TELEGC} …" >> "${LOGFILE}"

        igacmd -o Send -p "${TELEGC}" -w -v >> "${LOGFILE}" 2>&1        
        if [[ $? -eq 0 ]]; then
            echo "Enviada correctamente la nueva version del subsistema $SUBSISTEMA con local $LOCAL al remoto $REMOTO" >> "${LOGFILE}"
        else
            echo "Error en el envio de la nueva version del subsistema $SUBSISTEMA con local $LOCAL al remoto $REMOTO" >> "${LOGFILE}"
            RET=1
        fi
    else
        echo "Error en la generacion de la nueva version del subsistema $SUBSISTEMA con local $LOCAL al remoto $REMOTO" >> "${LOGFILE}"
        RET=1
        if [[ $VFIRST == "-v" ]]; then
            exit $RET
        fi
    fi

    sleep 3
done

exit $RET
```

> *Nota*:\
> En este script el comando gc\_config se utiliza para generar la nueva versión de la clave de un subsistema. Es importante entender que:
>
> * El parámetro -v indica que se debe crear una nueva versión de la clave.
> * Esta operación solo se realiza una vez, con el primer remoto de la lista. Esto garantiza que se genere una única versión consistente.
> * En las iteraciones siguientes, gc\_config no lleva -v, porque ya existe la versión creada en la primera ejecución. En estas llamadas, el comando simplemente aplica esa versión a los demás remotos.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.editran.onesait.com/documentacion-editran/open-v5.3/linux/versionado_envio_clave_propia.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
