1. Introducció
És recomanable abans de llegir aquesta entrada que consulteu El sistema n4d. El llenguatge que s'utilitza per a programar connectors (plugins) d'n4d és principalment python. Per aquest motiu és recomanable tindre'n unes nocions bàsiques per a poder seguir aquesta entrada. En podeu trobar informació detallada als següents enllaços:
http://mundogeek.net/tutorial-python/
http://librosweb.es/libro/python/
Encara que trobareu explicacions sobre codi a l'entrada, aquesta no pretén ser un tutorial de python, motiu pel qual és recomanable tenir algunes nocions bàsiques de programació.
2. Funcionalitats d'n4d.
Per a invocar funcionalitats n4d sobre un sistema en llenguatges com python o javascript, necessitarem un servidor amb n4d funcionant. Així, per exemple, python on podem fer cridades xmlrpc de la manera següent:
En primer lloc, executarem python:
Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
I carregarem la llibreria xmlrpc:
>>> import xmlrpclib
Ara que ja tenim la llibreria carregada, caldrà dir-li al sistema a quina màquina que suporte cridades xmlrpc volem que es connecte:
>>> client=xmlrpclib.ServerProxy("https://IP_DE_NUESTRA_MÁQUINA:9779")
D'aquesta manera ja podrem executar peticions a la nostra màquina:
>>> mirror=client.get_variable("", "VariablesManager", "LLIUREXMIRROR") >>> print mirror {'llx16': {'exception_msg': '', 'status_mirror': 'Ok', 'mirror_size': '14.258067918', 'progress': 100, 'last_mirror_date': '30/01/2017'}}
2.1. N4d-remote-gui-plugin:
Una de les funcionalitats que presenta n4d és el connector (plugin) n4d-remote-gui-pluguin que permet llançar interfície gràfica des de qualsevol màquina que estiga connectada a la nostra xarxa a través del servidor gràfic Xephyr.
Aquest connector presenta dues classes que podem utilitzar, per tal de conéixer-les podem executar :
n4d-client getmethods | grep Gui
Fixa't que en Gui, la G està en majúscula. Així tindrem la següent eixida on podrem veure tres classes: RemoteWebGu, RemoteGuiManager i GuiLauncherManager:
[RemoteWebGui] run_into_connection : anonymous [RemoteWebGui] remote_execute : anonymous [RemoteWebGui] create_connection : anonymous [RemoteWebGui] close_connection : anonymous [RemoteGuiManager] remote_execute : anonymous [GuiLauncherManager] register_display : adm admins [GuiLauncherManager] execute : adm admins
Una és per llançar interfícies gràfiques en local (a una màquina remota) , una altra per a interfícies remotes (a una màquina local) i finalment hi ha una classe per a llançar interfícies remotes en una pàgina web. RemoteWebGui no forma part del paquet d'n4d-remote-gui-plugin, s'utilitza per a l'admin-center en LliureX 16. Veurem alguns exemples d'utilització del paquet.
GUI en local sobre una màquina remota
La classe GuiLauncherManager proporciona un mètode per llançar una aplicació en una màquina remota. Utilitzarem el mètode amb n4d-client:
n4d-client -h 172.27.104.107 -c GuiLauncherManager -m execute -u lliurex -p lliurex -a " " lliurex "firefox wiki.lliurex.net"
Utilitzarem la instrucció:
Opción | Función |
---|---|
-h | Adreça IP del host que servirà la funció (host remot). |
-c | Classe on es troba el mètode que volem utilitzar. |
-m | Mètode que utilitzarem. |
-u | Usuari del host remot. El mètode no és anònim motiu pel qual és necessari proporcionar un usuari del grupo adm. |
-p | Contrasenya del host remot. |
-a | Atributs de la funció. En aquest cas " " és la ip des d'on s'invoca la petició que es completa automàticament, lliurex és l'usuari que volem que execute l'aplicació i finalment firefox és l'aplicació que volem llançar. |
D'aquesta manera s'obrirà el firefox en l'ordinador remot.
GUI remota sobre la nostra màquina
Altra opció que tenim és la d'executar a la nostra màquina una instància remota.
n4d-client -c RemoteGuiManager- m remote_execute -a $USER "caja" 172.27.104.107 lliurex lliurex True
Els paràmetres que utilitzarem són:
Opción | Función |
---|---|
-c | Classe on es troba el mètode que volem utilitzar. |
-m | Mètode que utilitzarem. |
-a | |
$USER: Usuari local. | |
"caja": Programa que volem executar. | |
IP: Ip del host remot. | |
lliurex: Usuari del host remot. | |
lliurex: Contrasenya | |
True: Aquest paràmetre indica que l'aplicació es llançarà com a sudo |
El que estem fent és llançar el programa caixa com a sudo en l'ordinador on estem connectats, de manera que els fitxers que veurem seran els de l'altre ordinador. A més, podrem modificar qualsevol arxiu ja que hem llançat el programa com a sudo.