É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ó.
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'}}
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.
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.
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.