# transfer



# Global variables

Es un diccionario de variables con valores por defecto. Las variables que contiene son las siguientes:

<table border="1" id="bkmrk-transfer_mode-modo-d" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 33.3333%;"><div><div>**Nombre**</div></div></td><td style="width: 33.3333%;">**Descripción**</td><td style="width: 33.3333%;"><div><div>**Valor por defecto**</div></div></td></tr><tr><td style="width: 33.3333%;"><div><div>transfer_mode</div></div></td><td style="width: 33.3333%;">Modo de transferencia, local o tentacle</td><td style="width: 33.3333%;"><div><div>tentacle</div></div></td></tr><tr><td style="width: 33.3333%;">temporal</td><td style="width: 33.3333%;">Ruta para ficheros temporales</td><td style="width: 33.3333%;"><div><div>/tmp</div></div></td></tr><tr><td style="width: 33.3333%;">data\_dir</td><td style="width: 33.3333%;">Directorio de datos de Pandora FMS</td><td style="width: 33.3333%;"><div><div>/var/spool/pandora/data_in/</div></div></td></tr><tr><td style="width: 33.3333%;">tentacle\_client</td><td style="width: 33.3333%;">Ruta del cliente de tentacle</td><td style="width: 33.3333%;"><div><div>tentacle</div></div></td></tr><tr><td style="width: 33.3333%;">tentacle\_ip</td><td style="width: 33.3333%;">Ip del servidor tentacle al que mandar los datos</td><td style="width: 33.3333%;"><div><div>127.0.0.1</div></div></td></tr><tr><td style="width: 33.3333%;">tentacle\_port</td><td style="width: 33.3333%;">Puerto de tentacle</td><td style="width: 33.3333%;"><div><div>41121</div></div></td></tr><tr><td style="width: 33.3333%;"><div><div>tentacle_extra_opts</div></div></td><td style="width: 33.3333%;">Opciones extras de tentacle</td><td style="width: 33.3333%;"><div><div>''</div></div></td></tr></tbody></table>

Para modificar las variables globales use la función :

[set\_global\_variable](https://pandorafms.com/guides/public/books/plugintools/page/set-global-variable-577)

**Versión**

- 1.0.0

# set_global_variable

**Descripción**

Establece el valor de una variable global en el diccionario '\_GLOBAL\_VARIABLES'.

**Parámetros**

<table border="1" id="bkmrk-module-acepta-el-tip" style="border-collapse: collapse; width: 100%; height: 104px;"><tbody><tr style="height: 46px;"><td style="width: 12.5%; height: 46px;">**Nombre**</td><td style="width: 6.25%; height: 46px;">**Tipo**</td><td style="width: 6.25%; height: 46px;">**Requerido**</td><td style="width: 50%; height: 46px;">**Descripción**</td></tr><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;">variable\_name</td><td style="width: 6.25%; height: 29px;">str</td><td style="width: 6.25%; height: 29px;">SI</td><td style="width: 50%; height: 29px;">Nombre de la variable a establecer</td></tr><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;">value</td><td style="width: 6.25%; height: 29px;">None</td><td style="width: 6.25%; height: 29px;">Si</td><td style="width: 50%; height: 29px;">Valor a asignar a la variable</td></tr></tbody></table>

**Return**

<table border="1" id="bkmrk-tipo-none" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 100%;">**Tipo**</td></tr><tr><td style="width: 100%;">None</td></tr></tbody></table>

 **Versión**

- 1.0.0

**Ejemplo**

```
import pandoraPlugintools as pt

# Define the variable name and value to set
variable_name = 'transfer_mode'
new_value = 'local'

# Set the value of the global variable
pt.transfer.set_global_variable(variable_name, new_value)

# Print the updated value of the global variable
print(f"Updated value of '{variable_name}': {pt.transfer._GLOBAL_VARIABLES[variable_name]}")
```

# get_global_variable

**Descripción**

Obtiene el valor de una variable global del diccionario '\_GLOBAL\_VARIABLES'.

**Parámetros**

<table border="1" id="bkmrk-module-acepta-el-tip" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 12.5%;">**Nombre**</td><td style="width: 6.25%;">**Tipo**</td><td style="width: 6.25%;">**Requerido**</td><td style="width: 50%;">**Descripción**</td></tr><tr><td style="width: 12.5%;">variable\_name</td><td style="width: 6.25%;">str</td><td style="width: 6.25%;">Si</td><td style="width: 50%;">Nombre de la variable a establecer</td></tr></tbody></table>

**Return**

<table border="1" id="bkmrk-tipo-none" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 100%;">**Tipo**</td></tr><tr><td style="width: 100%;">None</td></tr></tbody></table>

 **Versión**

- 1.0.0

**Ejemplo**

```
import pandoraPlugintools as pt

# Define the variable name to retrieve
variable_name = 'tentacle_client'

# Get the value of the global variable
value = pt.transfer.get_global_variable(variable_name)

# Print the value of the global variable
print(f"The value of '{variable_name}' is: {value}")
```

# tentacle_xml

**Descripción**

Envía un archivo usando el protocolo tentacle.

**Parámetros**

<table border="1" id="bkmrk-module-acepta-el-tip" style="border-collapse: collapse; width: 100%; height: 169px;"><tbody><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;"><div><div>**Nombre**</div></div></td><td style="width: 6.25%; height: 29px;"><div><div>**Tipo**</div></div></td><td style="width: 8.47222%;"><div><div>**Requerido**</div></div></td><td style="width: 47.7778%; height: 29px;">**Descripción**</td></tr><tr style="height: 24px;"><td style="width: 12.5%; height: 24px;"><div><div>data_file</div></div></td><td style="width: 6.25%; height: 24px;"><div><div>str</div></div></td><td style="width: 8.47222%;"><div><div>Si</div></div></td><td style="width: 47.7778%; height: 24px;">Archivo a enviar. Se necesita la ruta completa del archivo</td></tr><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;"><div><div>tentacle_ops</div></div></td><td style="width: 6.25%; height: 29px;"><div><div>dict</div></div></td><td style="width: 8.47222%;"><div><div>No</div></div></td><td style="width: 47.7778%; height: 29px;">Debe ser un dict con las opciones de tentacle (dirección \[contraseña\] \[puerto\])</td></tr><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;"><div><div>tentacle_path</div></div></td><td style="width: 6.25%; height: 29px;"><div><div>str</div></div></td><td style="width: 8.47222%;">No</td><td style="width: 47.7778%; height: 29px;">Permite definir una ruta personalizada para el cliente tentacle en caso de que no esté en sys path)</td></tr><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;">debug</td><td style="width: 6.25%; height: 29px;">int</td><td style="width: 8.47222%;">No</td><td style="width: 47.7778%; height: 29px;">Si está habilitado, el fichero de datos no será eliminado después de ser enviado</td></tr><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;">print\_errors</td><td style="width: 6.25%; height: 29px;">bool</td><td style="width: 8.47222%;">No</td><td style="width: 47.7778%; height: 29px;">Si se habilita con True, imprimirá todos los mensajes de error</td></tr></tbody></table>

**Return**

<table border="1" id="bkmrk-module_xml-m%C3%B3dulo-en" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">bool</td><td style="width: 50%;">Devuelve 0 para OK y 1 para errores</td></tr></tbody></table>

**Requisitos**

- sys
- os
- datetime.datetime
- <div><div>subprocess.Popen</div></div><div>  
    </div><div>  
    </div>

**Versión**

- 1.0.0

Ejemplo

```
import pandoraPlugintools as pt

# Define the path to the data file to be sent
data_file = '/tmp/agent.data'

# Define tentacle options as a dictionary
tentacle_ops = {
    'address': '192.168.1.100',
    'port': 41121
}

# Send the file using the tentacle protocol
success = pt.transfer.tentacle_xml(data_file, tentacle_ops, tentacle_path, debug, print_errors)

# Check if the file was sent successfully
if success:
    print("File sent successfully using tentacle protocol.")
else:
    print("Failed to send file using tentacle protocol.")
```

# transfer_xml

**Descripción**

Detecta el modo de transferencia y llama a la función agentplugin() para realizar la transferencia.

**Parámetros**

<table border="1" id="bkmrk-module-acepta-el-tip" style="border-collapse: collapse; width: 100%; height: 174px;"><tbody><tr><td style="width: 13.3642%;">**Nombre**</td><td style="width: 6.86729%;">**Tipo**</td><td style="width: 6.86729%;">**Requerido**</td><td style="width: 47.9012%;">**Descripción**</td></tr><tr style="height: 29px;"><td style="width: 13.3642%; height: 29px;">file</td><td style="width: 6.86729%;">str</td><td style="width: 6.86729%;">Si</td><td style="width: 47.9012%; height: 29px;">Diccionario con la configuración del agente</td></tr><tr style="height: 29px;"><td style="width: 13.3642%; height: 29px;">transfer\_mode</td><td style="width: 6.86729%;">str</td><td style="width: 6.86729%;">Si</td><td style="width: 47.9012%; height: 29px;">Modo de transferencia. Por defecto es global\_variables\['transfer\_mode'\]</td></tr><tr style="height: 29px;"><td style="width: 13.3642%; height: 29px;">tentacle\_ip</td><td style="width: 6.86729%;">str</td><td style="width: 6.86729%;">Si</td><td style="width: 47.9012%; height: 29px;">Dirección IP para Tentacle. Por defecto es global\_variables\['tentacle\_ip'\]</td></tr><tr style="height: 29px;"><td style="width: 13.3642%; height: 29px;">tentacle\_port</td><td style="width: 6.86729%;">int</td><td style="width: 6.86729%;">Si</td><td style="width: 47.9012%; height: 29px;">Puerto para Tentacle. Por defecto es global\_variables\['tentacle\_port'\]</td></tr><tr style="height: 29px;"><td style="width: 13.3642%; height: 29px;">tentacle\_extra\_opts</td><td style="width: 6.86729%;">str</td><td style="width: 6.86729%;">Si</td><td style="width: 47.9012%; height: 29px;">Opciones extra para Tentacle. Por defecto es global\_variables\[' <div><div>tentacle_extra_opts']</div></div></td></tr><tr><td style="width: 13.3642%;">data\_dir</td><td style="width: 6.86729%;">str</td><td style="width: 6.86729%;">Si</td><td style="width: 47.9012%;">Ruta de la carpeta data\_dir. Por defecto es global\_variables\[' <div><div>data_dir']</div></div></td></tr></tbody></table>

**Return**

<table border="1" id="bkmrk-tipo-none" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 100%;">**Tipo**</td></tr><tr><td style="width: 100%;">None</td></tr></tbody></table>

**Versión**

- 1.0.0

**Ejemplo**

```
import pandoraPlugintools as pt

# Define the path to the file to be transferred
file_to_transfer = '/tmp/agent.data'

# Define transfer mode (e.g., 'local' or 'tentacle')
transfer_mode = 'tentacle'

# Define Tentacle IP and port
tentacle_ip = '192.168.1.100'
tentacle_port = 41121

# Define data directory for local transfer mode
data_dir = '/var/spool/pandora/data_in/'

# Perform the file transfer based on the selected transfer mode
pt.transfer.transfer_xml(file_to_transfer, transfer_mode, tentacle_ip, tentacle_port, tentacle_extra_opts, data_dir)

# Print a message indicating the successful transfer
print("File transfer completed.")
```

# write_xml

**Descripción**

Crea un archivo .data de agente en la carpeta data\_dir especificada

**Parámetros**

<table border="1" id="bkmrk-module-acepta-el-tip" style="border-collapse: collapse; width: 100%; height: 145px;"><tbody><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;"><div><div>**Nombre**</div></div></td><td style="width: 6.25%; height: 29px;"><div><div>**Tipo**</div></div></td><td style="width: 7.85494%; height: 29px;"><div><div>**Requerido**</div></div></td><td style="width: 48.3951%; height: 29px;">**Descripción**</td></tr><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;"><div><div>xml</div></div></td><td style="width: 6.25%; height: 29px;"><div><div>str</div></div></td><td style="width: 7.85494%; height: 29px;">Si</td><td style="width: 48.3951%; height: 29px;">Cadena XML que se escribirá en el fichero</td></tr><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;"><div><div>agent_name</div></div></td><td style="width: 6.25%; height: 29px;"><div><div>str</div></div></td><td style="width: 7.85494%; height: 29px;"><div><div>Si</div></div></td><td style="width: 48.3951%; height: 29px;">Nombre del agente para el xml y nombre del fichero</td></tr><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;"><div><div>data_dir</div></div></td><td style="width: 6.25%; height: 29px;"><div><div>str</div></div></td><td style="width: 7.85494%; height: 29px;"><div><div>Si</div></div></td><td style="width: 48.3951%; height: 29px;">Carpeta en la que se creará el fichero</td></tr><tr style="height: 29px;"><td style="width: 12.5%; height: 29px;"><div><div>print_errors</div></div></td><td style="width: 6.25%; height: 29px;"><div><div>bool</div></div></td><td style="width: 7.85494%; height: 29px;"><div><div>No</div></div></td><td style="width: 48.3951%; height: 29px;">Si desea imprimir mensajes de error</td></tr></tbody></table>

**Return**

<table border="1" id="bkmrk-module_xml-m%C3%B3dulo-en" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">file</td><td style="width: 50%;">Fichero del agente</td></tr></tbody></table>

**Requisitos**

- datetime.datetime
- hashlib
- sys

**Versión**

- 1.0.0

**Ejemplo**

```
import pandoraPlugintools as pt

# Define the XML string to be written
xml_data = """
<agent>
    <name>RockyLinux</name>
    <module>
        <name>HostAlive</name>
        <type>generic_proc</type>
        <value>1</value>
    </module>
</agent>
"""

# Define the agent name and data directory
agent_name = "RockyLinux"
data_dir = '/tmp'

# Write the XML data to a .data file
data_file_path = pt.output.write_xml(xml_data, agent_name, data_dir)

# Print the path to the created .data file
print("Data file created:", data_file_path)
```