Notes et astuces sur les systèmes libres basés sur GNU/Linux

Aller au contenu | Aller au menu | Aller à la recherche

vendredi, 2 mai 2014

Une IHM pour LXC : LXC-Web-Panel

screenshot01.png
Bonjour à tous,

Un soupçon de motivation m'anime tout d'un coup, autant vous dire que c'est très rare et que je vais en profiter pour faire la promotion du made IN France :D

Comme vous le savez, j'utilise LXC pour faire mes petits tests. A part la mise en oeuvre qui est un petit peu fastidieuse, la solution tourne plutôt bien (très bien même).

Mais j'aime bien avoir une vue générale de ce qui tourne sur mon PC et une petite IHM Web pour visualiser et interagir avec LXC c'est plutôt cool.

J'ai trouvé une solution qui permet de gérer via une web appli votre hyperviseur LXC à la KISS style.
Elle est super bien référencée dans Google mais je n'ai vu aucun article français en parler, avouez que pour une application développée par des Français c'est un comble.

J'ai installé LWP sous ma Debian 7.5, of course it runs sans bidouille, juste en utilisant leur script.

Points Positifs :

  • Installation facile
  • Belle IHM, rien de superflu
  • Fait le boulot attendu.
  • Serveur léger

Axes d'améliorations :

  • Il me manque la gestion des sauvegardes/snapshot et ré-initialisation
  • Une petite console d'accès à distance (je n'ai encore pas encore de solution fiable et intéropérable mais on peut rêver)
  • Gestion des ressources systèmes de chaque containeur via un graphe
  • Laissez un script d'installation tourné en root me plaît pas trop.
  • Tout n'est pas opérationnel sous Debian mais cela devrait rentrer dans l'ordre avec LXC en version 1.0
    • Gestion du réseau
    • Création from scratch d'un container
    • Gestion du lancement des containers au boot
  • Je regrette un peu la technologie choisie qui se base sur du Python/Flask.


Quelques questions à l'un des auteurs Elie DELOUMEAU :

Qu'est-ce qui vous a poussé à developper LWP :

Avoir fait quelque chose d'utile dans ma vie et avoir quelque chose sur mon CV ^^

Quels besoins souhaitiez-vous couvrir avec cette application :

Rester dans une interface utilisable par tout le monde mais aussi poussée parfois pour les professionnels.

Vos prochaines fonctionnalités et développements en cours :

RESTful API
Backup
Gestion avancée des utilisateurs
Gestion d'ACL
Autoupdate
Gestion de plusieurs serveurs via une interface
Personnalisation de l'interface
Configuration du SSL à l'installation (si possible)
Installation sur une base MySQL si l'utilisateur le souhaite
Nous sommes actuellement sur le dev d'une version multi plateformes (debian/ubuntu/fedora etc..)

Pourquoi Python et Flask ?

Je suis parti sur du Python car je ne suis pas développeur et en tant qu'admin systèmes c'est le seul langage que je maîtrise plus ou moins. Et au final j'ai bien fait d'utiliser Python car avec LXC 1, il y a une bibliothèque Python livrée avec :D


Un grand merci à lui et une bonne continuation.

Sources :

dimanche, 11 juillet 2010

Requète Get et Post en Python

Bonjour,

Besoin de récupérer une page html ? remplir un formulaire ? les deux ?
Ce billet est fait pour vous :)

I.Récupération et parsage

Utilisation : On souhaite télécharger une page html accessible sur un serveur Web pour la parser facilement par la suite grâce au langage Python.

1.Connexion au serveur Web et récupération de la page voulue
import httplib

//demande de connexion au serveur
conn = httplib.HTTPConnection("www.toto.com")

//Envoi de la requête GET afin de récupérer www.toto.com/blagues.php
conn.request("GET", "/blagues.php")

// Récupération de la réponse du serveur
response = conn.getresponse()

//Lecture de la reponse
response.read()


2.Mise en forme de la réponse et utilisation

A la place de lire la page dans la sortie standard, on peut la mettre en forme et la stocker proprement.

from lxml import etree
from BeautifulSoup import BeautifulSoup

//Nettoyage de la page
html= etree.HTML(response.read())
result = etree.tostring(html, pretty_print=True, method="html")
soup = BeautifulSoup(result)

Maintenant que nous avons un résultat propre, nous allons pouvoir l'analyser et extraire ce qui nous intéresse.
BeautifulSoup nous permet de rechercher des éléments en fonction de leur nom, leur type et leurs attributs.
Plus d'informations dans la documentation.

Ici je vais chercher un nœud qui a pour attribut "name" et pour valeur "cler".
Par exemple cette balise correspondrait à ma recherche : <balise attr1="toto" name="cler" value="motdepasse" />

cle= soup.find(attrs={"name" :"cler"})

//Récupère la valeur du troisième attribut
value=cle.attrs[2][1]

//value vaudra "motdepasse"



II. Requête POST

Maintenant je souhaite envoyer des données au serveur Web via un formulaire.
Il suffit d'encoder mes données à envoyer puis de les envoyer et enfin attendre la réponse du serveur.

import urllib,urllib2

//URL du formulaire
url = 'http://www.toto.com/sendjoke.php'

//Champ et valeur du formulaire
params = urllib.urlencode({'blague': 'toto va à l'école'})

//Envoi de la requête
req = urllib2.Request(url, params)

//Récupération de la réponse du serveur
response = urllib2.urlopen(req)
data=response.read()
html= etree.HTML(data)

Normalement avec ces briques, vous pouvez :

  • Envoyer les requêtes basiques du HTTP.
  • Nettoyer les pages de leur défauts de conception.
  • Analyser leur contenu efficacement.

That's all folks !!

vendredi, 29 janvier 2010

Communication entre un Python et un Dauphin (MySQL)

Bonjour,

Pour faire communiquer ces deux animaux, c'est facile, il y a une soupe API pour ça.

Il vous faut installer le paquet mysql-python pour bénéficier de l'api _mysql. Sous ArchLinux :

#yaourt -S mysql-python

Pour nous faciliter la vie, une surcouche a été ajouté bien nommée mysqldb.

Exemple :

import MySQLdb # attention à la casse
db=MySQLdb.connect(host="host",user="user",passwd="password",db="base")
c=db.cursor() #définition du curseur
c.execute("""SELECT * FROM video WHERE nomVideo like %s""", (vid)) 
rq=c.fetchone() # stockage du tuple dans une variable
#Affectation variables
idvid=rq[0]
idflux=rq[1]
idep=rq[2]

Voila, juste une petite astuce pour moi, pour vous, on ne sait jamais.

Source : Sourceforge

That's all Folks.