Cargando...
 

El sistema n4d

1. ¿Qué es N4D?

 

N4D viene de Network for dummies. Es un sistema desarrollado por LliureX para facilitar la comunicación entre equipos. El N4D nos permite ejecutar de manera remota aplicaciones basada en PAM, y aumentar sus funcionalidades con plugins.

 

2. ¿Por qué N4D?

 

En el modelo de aula de LliureX nos encontramos multiples servicios (DHCP, servidor Web, LDAP, compartición de recursos, etc...). Dentro de este modelo hemos de ser capaces de poder configurar un aula de la manera más rápida y sencilla posible.

El sistema N4D posibilita la comunicación entre clientes y servidores con autentificación, además proporciona herramientas al usuario avanzado para el desarrollo de plugins y aplicaciones cliente-servidor.

Estos plugins son Clases N4D que publicarán una serie de métodos o funciones de clase para su ejecución de manera remota.

 

3. La herramienta n4d-client

 

N4D dispone de una serie de comandos que nos van a permitir interactuar con él:

n4d-client, n4d-modules, n4d-vars, n4d-create-conf, n4d-server.

N4d-client nos permite ejecutar funciones remotas desde la consola del sistema:

 

n4d­client ­-h host [-­u usuario ­-p contraseña|-­u usuario ­-p contraseña] -­m metodo -c clase [-­a ListaArgs]


Así tenemos:

 

Opción Función
host Dirección IP del host que servirá la función (host remoto).
usuario Usuario del host remoto.
contraseña Contraseña del host remoto.
método y clase Función que queremos utilizar y clase a la que pertenece.
ListaArgs Lista de todos los argumentos que podemos pasarle a n4d.

 
De esta forma si ejecutamos en el servidor la siguiente orden:

 

n4d-client -h localhost -c VariablesManager -m listvars

 
Nos saldrá una serie de variables (algunas se han borrado) que nos permiten conocer el estado del servidor. Ten en cuenta que puedes substituir localhost por la IP de la máquina que quieras:

 

SRV_IP='10.2.1.254'; PROXY_HOST='proxy'; DEADTIME='15'; SLAVE_BLACKLIST= DNS_UNREG_HOSTNAME_PREFIX='host-'; OPENSYSCLONE_SQUASHFS_PROTOCOL='tftp'; LDAP_BASE_DN='dc=ma5,dc=lliurex,dc=net'; DHCP_FIRST_IP='10.2.1.13'; PROXY_HTTP_PORT='3128'; SAMBA_DOMAIN_NAME='lliurex'; NAME_SERVER_SAMBA='%h'; DNS_EXTERNAL= HTTP_PATH='/var/www/'; INTERNAL_DOMAIN='aula1'; DHCP_LAST_IP='10.2.1.242'; INTERNAL_INTERFACE='eth0'; EXTERNAL_INTERFACE='eth1'; DHCP_DENY_UNKNOWN_CLIENTS='no'; DNS_HOSTNAME_PREFIX='llx-'; INTERNAL_MASK='24'; INTERNAL_NETWORK='10.2.1.0'; STATS_ENABLED='1'; PROXY_MAX_FILE_SIZE='204800'; SAMBASID= ... ZEROCENTER= ... CLIENT_LDAP_URI_NOSSL='ldap://10.2.1.254'; DHCP_HOST_MAX='80'; DHCP_ENABLE='True'; SRV_ALIAS=... HOSTNAME='MACROHPCompaq'; PROXY_ENABLED='True'; CLIENT_LDAP_URI='ldaps://10.2.1.254'; ZEROCENTERINTERNAL='{}'; DHCP_LEASE_TIME='12'; ENABLE_NSS_LDAP='ENABLED'; LLIUREXMIRROR='{u'llx16': {u'exception_msg': u'', u'status_mirror': u'Ok', u'mirror_size': u'14.2580130817', u'progress': 100, u'last_mirror_date': u'24/01/2017'}}';

 

4. Métodos y clases que se pueden usar en LliureX a través de n4d.

 

Podemos conocer todos los métodos y clases que se pueden usar en n4d con el parámetro getmethods:

 

n4d-­client ­-h hostname getmethods

 
Siendo hostname la ip de la máquina de la que queremos conocer los métodos disponibles. Si omitimos el parámetro -h hostname, nos saca los métodos y clases de nuestra máquina:

 

n4d­-client getmethods


La lista que nos sale son del tipo:

 

[Golem] send_xml_to_server : admin adm admins [FileOperations] get_file_from_server : admin admins teachers [FileOperations] send_file_to_server : admin admins teachers [SlapdManager] delete_serverid : adm admins ... [ApacheManager] backup : adm admins [ApacheManager] reboot_apache : adm admins [ApacheManager] load_exports : adm admins


La lista que nos aparece es bastante larga si se trata de un servidor, cada línea viene definida de la siguiente manera:

 

[Clase] Método: {lista de grupos permitidos}


Podemos ver que hay algunas funciones que sólo pueden ser ejecutadas por el grupo admin, o teachers (profesores) y otras pueden ser ejecutadas por cualquiera que tenga acceso a la máquina (anonymous). Podemos conocer todo el listado de Clases que hay en un servidor:

 

getmethods | cut -f1 -d " " | uniq

 

[Hostname] [LliurexUp] [Golem] [FileOperations] [ZeroServerWizardManager] [ZCenterVariables] [VariablesManager] [TeacherShareManager] [TeacherShare] [TaskMan] [SourcesList] [SocketManager] [SlapdManager] [SignOfLife] [Shutdowner] [ServerBackupManager] [SendFile] [SambaSIDFixer] [SambaManager] [RemoteWebGui] [RemoteGuiManager] [N4dProxy] [PmbManager] [PamnssPlugin] [OpenSysCloneRescue] [OpenSysCloneExport] [OpenSysClone] [NfsManager] [NetworkManager] [NetinstallManager] [NetShareOperations] [NetFoldersManager] [NTicketsManager] [MysqlManager] [MovingProfiles] [MountManager] [MoodleManager] [MirrorManager] [Matrix] [LtspBerryTerminal] [LmdTemplateManager] [LmdServer] [LmdNotifier] [LmdManagerClass] [LmdImageManager] [LmdClientManager] [LmdBootManager] [LlxBootManager] [LliurexVersion] [LliurexOwncloud] [LliurexOpenmeetings] [LliurexGuard] [LliurexBerry] [LessonManager] [IptablesManager] [HomeCleaner] [GuiLauncherManager] [FreeRadiusManager] [FileUtils] [EpoptesServer] [DrValentinCommon] [Dnsmasq] [DiscoverUsers] [CupsManager] [ClientManager] [ClientExeManager] [ApacheManager]

 

5. La clase VariablesManager y el comando n4d-vars

 

Como hemos visto n4d nos permite gestionar el conjunto de  variables de un sistema. Una de las clases que nos permite gestionar las variables es VariablesManager:

 

n4d-client getmethods | grep VariablesManager

 

Nos da como salida:

 

[VariablesManager] restore : adm admins admin [VariablesManager] listvars : anonymous [VariablesManager] get_variable_list : anonymous [VariablesManager] init_variable : admin admins adm [VariablesManager] add_variable : admin admins adm [VariablesManager] empty_trash : admin admins adm [VariablesManager] get_variables : anonymous [VariablesManager] set_variable : admin admins adm [VariablesManager] get_variable : anonymous [VariablesManager] read_inbox : admin admins adm [VariablesManager] backup : adm admins admin


Como hemos visto, para conocer todas las variables disponibles en un sistema podemos ejecutar:

n4d­client ­-c VariablesManager -­m listvars

Como es una función bastante utilizada, disponemos también del comando n4d-vars que nos simplifica el uso de la clase VariablesManager. Así, si ejecutamos:

 

n4d-vars listvars


Nos dará el mismo resultado que antes. Asimismo, podemos ver una variable concreta con el parámetro getvalues:

 

LLIUREXMIRROR='{u'llx16': {u'exception_msg': '', u'status_mirror': 'Ok', u'mirror_size': '14.258067918', u'progress': 100, u'last_mirror_date': '30/01/2017'}}';


Es por eso que nos facilita enormemente el uso de scripts usando la función eval, así por ejemplo podemos escribir un script:

 

#!/bin/bash eval $(n4d­-vars getvalues LLIUREXMIRROR) echo $LLIUREXMIRROR exit 0

 

Mastodon E-Mail