Mostrando entradas con la etiqueta mcm. Mostrar todas las entradas
Mostrando entradas con la etiqueta mcm. Mostrar todas las entradas

mcm-connections-manager 1.0

Today I've uploaded the new debian and tar files for mcm-connections-manager version 1.0

MCM GTK with MCM CLI inside running in Xubuntu

Lot's of changes have happened since the latest release in 2011. First of all, a full refactor of the source code and some stuff have been removed and other cool features have been added. For the last two years I've been using it (and others) daily with 30+ servers until I had to update my Ubuntu machines to 12.04.

With Python 2.7 the xml library changed and the file where the connections data was stored didn't work. So the first thing was to change the format to JSON. The only problem with this approach is that Python 2.4 users will need to add the JSON library to the mcm project.

A lot of work was placed on the CLI version to make it work as it should since I found it to be very cool to have it in a remote server to connect to other servers inside the same, firewall protected LAN.
  • Support for Dialog and fallback in case it's not installed
  • Cleaner lists
  • Autocomplete for the aliases
The GUI version has also changed to make the dialogs cleaner, a new icon is used with a better resolution. Other changes include:
  • Built-in themes for the console colors
  • Install your public key in a remote SSH server with one click
  • Better error handling
  • Support for embedded VNC authentication
  • Add a closing button to tabs and the cluster check boxes are shown when cluster mode is active
  • Filter by connection types
  • Password field is hidden by default and a button to feed it to a console
  • Removed the tips thing which wasn't very useful as it was
mcm in cluster mode and solarized dark theme

Finally, I've moved the project to Google Code and created a new Google Group to give support to users. This way I believe more people will provide feedback and bug reports.

Now go to that google code page and download!

Central GNU Screen/SSH Server

I'm not going to explain why screen is such a great tool because it's and there are many blogs who will tell you so. What I'm going to explain is how you can use screen to setup a central server to manage and monitor who connects to your servers and what do they do.
Screen has the special ability that allows us to log and connect to running sessions. This becomes handy in our current objective: setting up a central server where all users must connect so they can connect to other servers.
The idea is pretty basic and has lots of advantages:

  • No user management for each server
  • Users know only one, easily changed password for all servers
  • Greater control of user actions
  • Monitor unscheduled access
  • Log user activity
Of course, there are some disadvantages:

  • Single point of failure
  • Single point of entrance
  • Can become a pain when transfering files
First, we need to setup a single server with the following:

  1. SSH Client
  2. GNU Screen
  3. User account for each user (limit the user's group using quotas)
  4. Common user account on each server you wish to connect to (i.e. foo)
You have your screen server, and on each server you have a user (i.e. foo) with the same password (i.e. bar123). Now secure you SSH configuration by allowing access only from the screen server to the foo user (and admin just in case):
# /etc/hosts.allow
sshd: 192.168.0.2/255.255.255.0
sshd: 192.168.0.3/255.255.255.0
# /etc/hosts.deny
sshd: ALL
# /etc/ssh/sshd_config
AllowUsers foo admin
PermitRootLogin no
Your users should be able now to:

  1. Connect to the screen server using someuser@screenserver
  2. Connect to your servers only from the new screen server using foo@webserver

Use some screen magic

If you include screen in this whole setup, you'll be able to log user activity in the servers by correctly configuring screen. First, add the following configuration to /etc/screenrc:

# Scrolling
defscrollback 1500
termcapinfo xterm* ti@:te@

# Detach on close
autodetach on

# Disable key binds
bind H echo "Disabled" # Don't allow the user to disable logging
bind d echo "Disabled" # Don't allow to detach
bind ^d echo "Disabled" # Don't allow to detach
bind c echo "Disabled" # Don't allow to create
bind ^c echo "Disabled" # Don't allow to create
bind S echo "Disabled" # Don't allow to split
bind : echo "Disabled" # Don't allow to issue commands

# no startup msg
startup_message off

# Logging
deflog on
logtstamp on
logfile /tmp/screen-logs/%t-%Y%m%d-%n.log

On each user's home folder, create an empty .screenrc file. This file should be owned by root with read only permits (since you don't want the users to modify it). This way, no user will be able to override the general configuration.

Next, download the manager.sh script and add your servers:

servers=(
    "foo@bar1"
    "foo@bar2"
    "foo@bar3"
)

This script allows a user to select a server from the given list and launchs a ssh session inside a screen session:
 /usr/bin/screen -S user.bar1 -t user.bar1 /usr/bin/ssh foo@bar1 

Since you're controlling and monitoring all the screen sessions, you can easily know what the users are doing on each server by watching the log files: user-20110116-0.log

Well, I hope this is useful for someone else. Leave a comment for any suggestions.

Monocaffe Connections Manager 0.9.3

Nueva versión disponible de Monocaffe Connections Manager: 0.9.3

http://launchpad.net/mcm/

Se han añadido las siguientes carácteristicas:
  • Cliente VNC integrado
  • Edición de conexiones
  • Formulario para reportar fallos, ideas o spamearme.
  • Mensaje de error al fallar un cliente
  • Traducciones al francés, alemán y castellano.
Se han resuelto algunos fallos gracias a los reportes de algunos usuarios.

Finalmente, screenshot!

MCM en Varias Distros

Ubuntu Lucid Lynx 10.04 RC
Funciona, aunque da problemas el nuevo tema "Ambience" http://bugs.launchpad.net/mcm/+bug/570600 y la verdad es que el tema de los colores y los nuevos botones no me gusta nada.


Fedora 12
Hay un pequeño problema en el script de instalación ya que el directorio /usr/share/apps no existe. Sólo fue añadir la opción "-p" al mkdir y todo perfecto.


OpenSUSE 11
Destacar que el LiveCD de OpenSUSE es el único con soporte para ratón integrado de VirtualBox y que además, arranca con una buena resolución. Sólo hará falta instalar el paquete "python-xdg" o algo por el estilo. Buscad xdg y os aparece.


Kubuntu Karmic Koala 9.10
No había usado Kubuntu en mucho tiempo y sólo puedo decir: WOW! Es un espectaculo, pero demasiado cargado para mi gusto. Ha sido el más complicado ya que hay que instalar dos paquetes: python-glade2 y python-vte. Ya estan añadidas esas dependencias al paquete .deb


Linux Mint 8
Ha sido la más sencilla ya que viene con todos los repositorios añadidos al apt. La verdad, me ha encantado la tematica y el cuidado que se le da a los diferentes aspectos estéticos.


No he podido probar con las siguientes distros con las que lo he intentado: Arch (hay que instalar), Slax (no parece tener un buen soporte para PyGTK ya que no encontre los "modulos").

Monocaffe Connections Manager 0.9.2

Nueva versión de Monocaffe Connections Manager 0.9.2

Esta es una revisión menor sobre el código de 0.9.1. Se arreglan algunos fallos menores y se han añadido y quitado cosas.

Una de las cosas que me ha gustado es la posibilidad de ejecutar comandos SSH si los incluimos dentro de las opciones de la conexión. Por ejemplo, he creado un grupo llamado "MyJBoss" donde tengo una serie de conexiones SSH llamadas: myjboss-server.log, myjboss-access.log, etc. En las opciones de myjboss-server.log he añadido lo siguiente: "tail -f /opt/jboss/server/default/log/server.log". De esta forma, al utilizar esta conexión, veo directamente este log.



Podéis descargarlo del lugar habitual:

http://launchpad.net/mcm/+download

MCM en Lubuntu 10.04

Hoy he instalado Lubuntu 10.04 en una máquina virtual para comprobar la instalación de MCM y mis primeras impresiones con esta primera iteración de LXDE para Ubuntu son muy positivas.
La instalación de MCM ha funcionado igual que en Ubuntu y no he detectado ningún problema despues de realizar las pruebas pertinentes.
Lo que más me ha llamado la atención de Lubuntu es que el navegador que viene por defecto instalado es Chromium que además, con su temática de tonos azules, se asemeja más al de LXDE.


Esta es la ventaja más importante de desarrollar con PyGTK: no estas limitado a GNOME, ya que muchos de los otros Desktop Managers como LXDE y XCDE utilizan GTK. Espero algún día ver un Desktop Manager ligero basado en Qt.

Monocaffe Connections Manager 0.9.1

He sacado un revisión de la versión 0.9 de MCM para arreglar algunos fallos que pueden ser molestos para algunos usuarios y añadido características que no deben influenciar en su uso.

Podeis descargar la nueva versión aquí.

PuTTY Opciones

Buscando en la red información para importar ficheros de registro de PuTTY a MCM, he encontrado una aplicación que se parece bastante a MCM y que tienen muy buena pinta.

PuTTY Connection Manager



Es muy parecido a MCM, por lo que permite conectar a diferentes sesiones de SSH y utiliza pestañas para navegar. De igual forma tiene un árbol que muestra las conexiones del usuario.

Diferencias con MCM:

Sólo para SSH, Telnet ¿y FTP?
Sólo para Windows
No permite enviar comandos a varias terminales (cluster mode).
No tiene una barra de referencia.
No es OSS.
Tiene una opción que me gusta por la cual permite el Autologon y se la voy a copiar :)

Es una solución para usuarios de Windows que deseen algo parecido a MCM, pero claro, sin toda la funcionalidad que podrían tener si usarán Linux.

Indagando un poco más he encontrado incluso más soluciones para Windows:

mRemote 



Es GPL y solo funciona sobre Windows pero soporta todo tipo de conexiones (incluso ICA).

Poderosa



Es parecido a PuTTYCM aunque no han lanzado ninguna nueva versión desde el 2006.

Así que para Windows existen soluciones muy buenas y estables (con cosas muy interesantes para copiar), por lo que ni me molesto :)

Tanslations in Monocaffe

I've uploaded the necessary changes to Monocaffe so it can be easily translated to different idioms. Any one can help on translations to their respective idioms.

我已经上传到Monocaffe必要的变化,可以很容易地转换为不同的成语。任何人能够帮助到他们各自的成语翻译。

He pujat els canvis necessaris per Monocaffe per la qual cosa es pot traduir fàcilment a diferents idiomes. Qualsevol pot ajudar en les traduccions als seus idiomes respectius.

Olen ladannut tarvittavat muutokset Monocaffe joten se on helppo kääntää eri sanontojen. Tahansa voi auttaa käännöksiä omille idioms.

Ich habe die notwendigen Änderungen an Monocaffe hochgeladen wurde, so kann es leicht auf verschiedene Idiome übersetzt. Jeder kann helfen, auf Übersetzungen in ihre jeweiligen Redewendungen.  

Ho caricato le modifiche necessarie per Monocaffe in modo che possa essere facilmente tradotto in idiomi diversi. Nessuno può aiutare il traduzioni alle proprie rispettivi idiomi. 

Я загрузил необходимые изменения в Monocaffe поэтому она может быть легко переведена на различные идиомы. Любой может помочь на переводы в свои соответствующие идиомы. 

Jag har lagt upp de nödvändiga ändringarna Monocaffe så det kan lätt översättas till olika idiom. Någon kan hjälpa på översättningar till sina respektive idiom. 

He subido los cambios necesarios para Monocaffe por lo que se puede traducir fácilmente a diferentes idiomas. Cualquiera puede ayudar en las traducciones a sus idiomas respectivos.

Fiz upload as mudanças necessárias para Monocaffe para que possa ser facilmente traduzidas para idiomas diferentes. Qualquer um pode ajudar em traduções de seus respectivos idiomas.

http://translations.launchpad.net/mcm/trunk

Desarrollo de Monocaffe Connections Manager

Varias personas ya me han preguntado cómo he desarrollado MCM y ésta entrada va de ello, sobre las herramientas y tecnologías utilizadas y la justificación detrás de cada una de las razones y consecuencias. Aunque parezca una aplicación sencilla, utiliza muchas tecnologias creadas por muchas otras personas y que sin alguna de estas, quizás MCM no existiria.

Resumen
  • Python
    • PyGTK
    • VteTerminal
    • minidom
    • json
    • csv
    • urllib
    • optpars
  • VIM
    • exuberant-ctags
  • Glade
  • Bazaar
  • Dialog
Desarrollo

En su totalidad, MCM está escrito en Python y utilizando sólo las herramientas propias de Python y PyGTK. Esto me permite distribuir MCM sin que dependa de instalaciones complicadas o de cientos de paquetes ya que estos vienen por defecto con cualquier instalación de GNOME.

mcm + vim + exuberant-tags

Para escribir MCM, ninguna herramienta mejor que VIM. Exuberant-ctags permite mostrar una ventana dentro de VIM para navegar las clases y métodos de un fichero.

GUI

Para crear el GUI, se crea la mayoria de ventanas y dialogos utilizando Glade. Es un GUI para crear GUI's. Con una interfaz sencilla podemos crear todos estos widgets y configurar sus propiedades y señales. Para efectos dinamicos o widgets más complicados (como el breadcrumb) utilizamos PyGTK directamente. Despues de crear los widgets y sus señales, para manejarlas en código debemos leer el fichero que genera Glade (un XML):

gtk.glade.XML(glade_file)

Para interactuar desde el código con los objetos creados por libglade, debemos referenciarlos:

self.main_window = self.xml.get_widget("main_mcm")

Glade permite ahorrar una cantidad de trabajo y código gigante. Al ser XML los ficheros que genera, no es necesario utilizar Glade para realizar modificaciones sencillas (nombres de objetos, señales, etc.) y creo que cualquier lenguaje serio tiene una librería para leer estos ficheros y generar interfaces.


Con Glade hay que ir con cuidado porque de vez en cuando le da por no funcionar como debe, pero nada que no se arregle guardando a menudo y reiniciando.

Launchpad

En launchpad.net se nos ofrece para nuestro proyectos OSS todo lo necesario y a la ultima, como el gestor Bazaar que viene con una GUI muy sencilla. Bazaar es un sistema de versiones distribuido, lo que significa que no hace falta un repositorio central para utilizarle. Los merge se hacen de forma muy sencilla al igual que crear ramas. El sistema de gestión de bugs de Launchpad es muy sencillo y me gusta mucho la relación real que existe entre los fallos, los milestones y los releases. Tambien ofrecen una herramienta para ayudar en la traducción de proyectos, pero hace falta algo de trabajo para hacerla funcionar correctamente y espero conseguir tiempo en el futuro para esto.


¿Microsoft Windows?

Dado que GTK y Python funcionan perfectamente sobre Windows, me imagino que MCM también. No he llegado a probarlo por lo que si alguien se anima, que me comente sus resultados y si hay interés, se puede hacer una rama aparte para su desarrollo. El único problema que veo ahora mismo sería el modo en el que se generan las terminales utilizando VteTerminal y no estoy seguro de que estas funcionen correctamente en Windows.

Wooops... Fallo en MCM 0.9

Gracias a mis beta testers :) he arreglado un par de fallos en la nueva versión de MCM 0.9. Por una parte, el script de instalación no copia el fichero "tips.json" al directorio del usuario, el script de arranque no añadía una nueva linea de configuración "buffer.size" al fichero mcm.conf y finalmente, por alguna razón mágica, Glade dejo de escribir las señales de los eventos para las acciones de importar y exportar. Todos estos fallos has sido resueltos, así que si habéis tenido estos problemas, descargad los ficheros nuevamente y todo debería funcionar sin problemas.

Monocaffe Connections Manager 0.9

Nueva versión de Monocaffe Connections Manager con una gran adición de la que estoy muy contento. Un widget al estilo breadcrumb para acceder a referencias a comandos, tal que el usuario no tenga que recordar cada opción, comando o conjunto de teclas de cada aplicación que usa.


Este widget además permite añadir nuevos "Tips" y compartirlos con el mundo. Aun hay que desarrollar un poco más éste widget, pero es 95% funcional y espero os guste la idea.

Tambien se han resulto algunos fallos y molestias que mis compañeros de trabajo han ido encontrando al utilizar mcm y es que tengo un equipo de beta-testers de elite.

Screenshot!


Descargad desde aquí:
http://launchpad.net/mcm/+download

Monocaffe Connections Manager 0.8

Ya está disponible la nueva versión de MCM para ser descargada desde el sitio habitual.

http://launchpad.net/mcm/

Para esta nueva versión se han arreglado gran variedad de fallos y se han añadido algunos cambios que mejoran la interfaz.


Monocaffe Connections Manage 0.7.5

Nueva versión de Monocaffe Connections Manager puede ser descargada desde el sitio habitual:
mcm-0.7.5.tar.gz

Esta nueva version arregla algunos fallos y añade ciertas mejoras como:
  • Menu auxiliar de las consolas para:
    • Copiar/Pegar desde/a una consola.
    • Buscar en google a partir de la selección.
    • Cambiar el titulo de las pestañas.

Eso es todo por ahora, aun queda algo de trabajo pero en curso para la release 0.8.

Screenshot!!!


Monocaffe Connections Manager 0.7

Monocaffe Connections Manager 0.7 está lista para ser descargada. Esta nueva versión contiene:
  • Configuración visual de las consolas (transparencia, fuente, colores)
  • Configuración de los clientes (binario y opciones por defecto)
  • Permite modificar fácilmente las conexiones.
  • Reordenado de las pestañas
  • Ayuda en linea
  • Instalación automatizada
  • Paquete .deb para Ubuntu
Monocaffe Connections Manager 0.7 is ready for download. This new version adds:
  • Visual configuration of consoles.
  • Clients configurations (binary and default options).
  • Easily modify connections data.
  • Tabs rearrangement
  • Online Help
  • Automatic instalation by distutils
  • Ubuntu package


ScreenShots!!!



Monocaffe Connections Manager 0.6

Monocaffe Connections Manager 0.6 está lista para ser descargada. Además de arreglar algunos fallos he añadido una caracteristica genial, un línea de comandos en cluster. Marcando diferentes pestañas y luego escribiendo en la parte inferior, se verá reflejado en todas las pestañas marcadas. De ésta forma podemos trabajar en varias maquinas a la vez.



Tambien he arreglado algunos bugs y añadido otros :-) los podeis ver en el launchpad de mcm en http://launchpad.net/mcm

Finalmente, me gustaria añadir una version hecha en Qt para KDE, pero prefiero continuar afinando las versiones de consola y de GTK, por lo que si alguien está interesado, que me deje un comentario aquí o en launchpad.

Pronto haré una entrada sobre todo el proceso para poder montar un paquete en launchpad para Ubuntu, siempre que me acuerde de todos los pasos, porque es lioso de cojones.

Monocaffe Connections Manager 0.5.3

La primera versión de mcm con el GUI GTK ya está listo para descargarse. La versión en terminal no conlleva cambios importantes. La nueva versión en GTK está evolucionando incluso para convertirse en un reemplazo de las tipicas terminales, con distintas opciones para abrir pestañas en local y hacia las distintas conexiones. Se agradecen comentarios.

New version of mcm with a GTK GUI. The terminal version hasn't changed since all changes apply to the new front-end. The new GTK version is evolving into a full replacement for a typical terminal application, with different options to open tabs on localhost and to the different connections. Comments are welcome.

Screenshots!

Main Window

 
Add a new connection

Estructura aplicaciones PyGTK

Quiero explicaros una de las cosas que veo menos en los tutoriales y es sobre las estructuras de directorios para aplicaciones Python. Sigue una estructura parecida a las de Unix (¿POSIX?). Esta es la que he seguido para mcm y estoy bastante satisfecho con ella, por lo que voy a utilizarla como ejemplo:
  • mcm
    • doc
      • INSTALL
      • CHANGELOG
      • BUGS
      • manpage
    • conf
    • logs
    • bin
      • mcm.sh
    • mcm
      • __init__.py
      • terminal
        • __init__.py
      • common
        • __init__.py
        • utils.py
        • models.py
        • controllers.py
        • exceptions.py
      • gtk
        • __init__.py
        • mcm-gtk.py
        • mcm.glade
        • mcm_icon.png
      • qt
        • __init__.py
        • mcm-qt.gtk
Una aplicación no es sólo el código fuente, por lo que el orden en la documentación, ficheros de configuración y otros, merecen un lugar donde desarrollarse de forma independiente al desarrollo de la aplicación misma.
Cada páquete o modulo de Python es definido por el fichero __ini__.py y serán estos los que podremos importar dentro de nuestros modulos y conseguir un empaquetado bien definido que nos permitira cumplir con facilidad el principio DRY.
De igual forma podemos ver que la misma estrúctura de directorios define un modelo MVC lo que facilita mucho el desarrollo para diferentes presentaciones. En mcm, reutilizamos las clases y métodos definidos para la aplicación CLI en las aplicaciones gráficas para GTK y Qt. Esto lo logramos, en el caso de GTK definiendo distintos eventos que utilizan a los controladores para crear y modificar nuestros modelos. Por ejemplo veamos como añadimos una conexión desde la vista GTK:

  • def add_event(self, widget):
  •     # Obtenemos de distintas formas los datos necesarios
  •     connection = connections.connections_factory(x, y, z, a, b, c, d)
  •     connections.append(connection)
  • def save_and_quit(self):
  •      dao = Dao()
  •      dao.save(connections)
Lo mejor es que esto mismo lo hacemos en la parte Qt y cualquier otra vista que se nos ocurra.

Monocaffe Connections Manager 0.4

Nueva versión de mcm para lo cual he creado un nuevo sitio para mantener toda la información al respecto.

 Monocaffe Connections Manager

Esta nueva versión añade la posibilidad de importar un fichero CSV generado a partir de una hoja de cálculo y de exportar a un fichero HTML. Tambien he añadido conexiones HTTP para consolas de Jboss. Además he iniciado la creación de la aplicación en GTK, por lo cual he añadido la opción de grupos para facilitar la ordenación. Finalmente he mejorado la introducción de opciones para los distintos clientes, por lo que ahora se pueden definir incluso túneles SSH.

Descargad desde el sitio del proyecto.

Monocaffe Connections Manager 0.3

He terminado la versión 0.3 de MCM. Si tenemos "dialog" instalado, al ejecutar sin ningún argumento, nos mostrará un menú con los servidores y con pulsar ENTER sobre alguno, abrirá la conexión. También he cambiado el fichero .mcm donde se guardan los datos de las conexiones para utilizar XML y eliminar un pequeño bug que había. También he añadido conexiones FTP.

Podéis descargarlo desde aqui

This software is designed to ease the management of connections to several types of servers. Since I couldn't find any solution to handle all types of connections from a console, mcm was born. The idea is to avoid having to maintain a separate spreadsheet or wiki page with all the servers I usually connect to and keep that monster open during my work sessions.
There are other solutions, but each handled either ssh only connections, or graphical connections (like vnc). Also, this graphical connections managers were designed to have a GUI and a single command from the console is what I wanted.
My main objective is to provide a fast and reliable mean to store the information of this connections and be able to reach them fast and easily.

Click here to download version 0.3

Screenshot!