Enviar mensajes a Telegram desde línea de comando – utilizando un script

Introducción

telegram_logoEn una publicación anterior se describieron los pasos necesarios para instalar el cliente de Telegram en Linux para enviar mensajes desde la línea de comando.  Esto es particularmente interesante si se considera para el envío de notificaciones (sistema operativo, aplicaciones, etc.) a un adminstrador o usuario en particular.

Desarfortunadamente para este caso, la herramienta de vysheng presenta una intefaz interactiva.  Revisando diferentes foros y el repositorio de código del proyecto, el autor menciona que tiene pensando incluir un modificador para permitir el envío de mensajes de manera desatendida, sin embargo hasta el momento esa opción no ha sido desarrollada.

Para solventar esta situación he creado un procedimiento muy simple que se describe a continuación.

Precondiciones

  1. El cliente CLI de Telegram ha sido instalado en Linux.
  2. El usuario ha acedido a Telegram desde su teléfono móvil utilizando el número telefónico con el que se va a configurar el cliente CLI.
  3. Se ha ejcutado una primera vez la aplicación CLI de telegram y se ha proporcionado el código que envía el servicio a través de SMS.

Importante!  Debe tenerse en cuenta que durante la configuración inicial de Telegram (paso #3) se crea por defecto el directorio ~/.telegram el cual es por supuesto dependiente del usuario del sistema operativo con que se ejecute así que este paso debe realizarse con el usuario que efectivamente realizará el envío de los mensajes.

Enviar mensajes con una unica instrucción

Para el uso de esta aplicación para el envío de advertencias o notificaciones por parte de software de terceros será necesario poder hacerlo ejecutando una unica instrucción que no requiera de la intervención del usuario.

Para hacer esto con el cliente CLI de Telegram se deberá ejecutar la siguiente instrucción.

$ telegram -k /etc/telegram/server.pub -W <<EOF
msg Pepito_Pimenton "Este es el mensaje"
safe_quit
EOF

En la instrucción anterior deberá ajustarse el destinatario del mensaje (peer) y el mensaje a transmitirse.

Enviar mensajes con un script

Instalación y configuración

Para simplificar este procedimiento he creado el script telegram_sendmsg.sh que se debe copiar en una ruta disponible par los usuarios como por ejemplo /usr/bin.

El script incluye una primera sección de configuración con las siguientes variables.

PROGRAM Cliente CLI de Telegram.Por defecto esta opción se configurará por su propia cuenta si la aplicación ha sido instalada dentro del PATH.  Modifique su valor de lo contrario.
SERVER_PUBKEY Referencia la llave pública del servicio de Telegram.Por defecto utiliza la ubicación global de la llave.  Modifique esta opción si la llave se instaló en otra ubicación.
RECIPIENT Receptor del mensaje.Por defecto recibe el parámetro desde la línea de comando.  Normalmente no debera necesitar modificar este valor.
CONFIG_FILE Configuración de Telegram para el usuario actual que invoca el cliente.Por defecto es vacía y referencia a la ubicación por defecto: ~/.telegram.  Modifique esta opción si la configuración del usuario ha sido creada en otra ubicación.

Uso

Para utilizar el script utilice la siguiente sintáxis.

telegram_sendmsg.sh receptor mensaje

Por ejemplo de la siguiente manera.

$ telegram_sendmsg.sh Pepito_Pimenton "Hola Mundo"

Recursos

Enviar mensajes a Telegram desde línea de comando

Introducción

telegram_logoA continuación se describen los pasos necesarios para construír, configurar y utilizar la herramienta de línea de comando para enviar mensajes a través del servicio de mensajería móvil Telegram.

Para que esta aplicación pueda funcionar correctamente será necesario que previamente haya sido creado el usuario en Telegram, es decir, que el usuario haya utilizado el servicio desde un dispositivo móvil con el número telefónico que utilizará posteriormente para identificarse.

Construcción

Instalar los prerequisitos para la construcción de la aplicación de línea de comando.

$ sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev

Obtener la distribución mas reciente del código fuente de la aplicación.

$ git clone https://github.com/vysheng/tg.git && cd tg

Compilar  y enlazar la aplicación.

$ ./configure 

$ make

Instalación

Ubicar la llave pública del servicio en su ubicación por defecto.

$ sudo mkdir /etc/telegram/

$ sudo cp tg-server.pub /etc/telegram/server.pub

$ sudo chmod 644 /etc/telegram/server.pub

Ubicar el binario de la aplicación en una ruta conocida dentro del PATH.

$ sudo cp telegram /usr/bin

$ sudo chmod 755 /usr/bin/telegram

Uso

Si se siguieron los pasos establecidos anteriormente ubicando la llave pública del servicio bajo /etc/telegram.

$ telegram

De lo contrario, si se decide utilizar una ubicación diferente se deberá especficar la llave pública del servicio con el parámetro -k del comando telegram cada vez que se vaya a ejecutar.

$ telegram -k /ruta/tg-server.pub

Configuración inicial

La primera vez que se ejecuta la aplicación para un usuario específico es necesario configurarla para asociarle la cuenta de Telegram que utilizará.

telegram_firstconfig
Para esto se deben realizar los siguientes pasos.

  1. Especificar el número de teléfono móvil de la forma: +Código del País Teléfono.
  2. Especificar el código enviado por Telegram a ese número telefónico a través de SMS.

Enviar un mensaje

Listar los contactos disponibles.

> contact_list

User #XXXXXXXX: Pepito Pimenton (Pepito_Pimenton 573012345678) offline. Was online [2014/05/12 01:47:42]
...

Para enviar un mensaje se debe utilizar el comando msg con al siguiente sintáxis.

msg <peer> Text

El destinatario (o peer) corresponde con el nombre del contacto reemplazando sus espacios por guíones bajos: Pepito Pimenton -> Pepito_Pimenton.  Por ejemplo.

> msg Pepito_Pimenton "Hola Mundo"

Sugerencia!  Utilice la tecla TAB para autocompletar los comandos de telegram o los nombres de los contactos.

Comandos soportados

Messaging

  • msg <peer> Text – sends message to this peer
  • fwd <user> <msg-seqno> – forward message to user. You can see message numbers starting client with -N
  • chat_with_peer <peer> starts one on one chat session with this peer. /exit or /quit to end this mode.
  • add_contact <phone-number> <first-name> <last-name> – tries to add contact to contact-list by phone
  • rename_contact <user> <first-name> <last-name> – tries to rename contact. If you have another device it will be a fight
  • mark_read <peer> – mark read all received messages with peer

Multimedia

  • send_photo <peer> <photo-file-name> – sends photo to peer
  • send_video <peer> <video-file-name> – sends video to peer
  • send_text <peer> <text-file-name> – sends text file as plain messages
  • load_photo/load_video/load_video_thumb <msg-seqno> – loads photo/video to download dir
  • view_photo/view_video/view_video_thumb <msg-seqno> – loads photo/video to download dir and starts system default viewer

Group chat options

  • chat_info <chat> – prints info about chat
  • chat_add_user <chat> <user> – add user to chat
  • chat_del_user <chat> <user> – remove user from chat
  • rename_chat <chat> <new-name>
  • create_group_chat <user> <chat topic> – creates a groupchat with user, use
  • chat_add_user to add more users

Search

  • search <peer> pattern – searches pattern in messages with peer
  • global_search pattern – searches pattern in all messages

Secret chat

  • create_secret_chat <user> – creates secret chat with this user
  • visualize_key <secret_chat> – prints visualization of encryption key. You should compare it to your partner’s one

Stats and various info

  • user_info <user> – prints info about user
  • history <peer> [limit] – prints history (and marks it as read). Default limit = 40
  • dialog_list – prints info about your dialogs
  • contact_list – prints info about users in your contact list
  • suggested_contacts – print info about contacts, you have max common friends
  • stats – just for debugging
  • show_license – prints contents of GPLv2
  • help – prints this help

Exit the application

  • quit
  • safe_quit

Recursos

Cambiar una contraseña de Windows 7 desde Linux Ubuntu 14.04 utilizando chntpw

Introducción

A continuación se describen los pasos necesarios para modificar una contraseña de un usuario de Windows desde Linux Ubuntu, para seguirlos es necesario poder montar la partición física donde se encuentra instalado Windows desde la máquina que ejecuta el Linux.

Este procedimento es útil para recuperar el acceso de usuarios que han olvidado su contraseña (especialmente los administradores).

Instalación de chntpw

$ sudo aptitude install chntpw

Identificar el sistema operativo del usuario

En una terminal montar la partición donde se encuentra el Windows que contiene al usuario cuya contraseña se va a modificar y ubicarse en el directorio System32/config.

$ cd /windows/Windows/System32/config

Gestionar la información de la cuenta

Listar la información de las cuentas de usuario disponibles en el sistema operativo.

$ sudo chntpw -l SAM

chntpw version 0.99.6 110511 , (c) Petter N Hagen
Hive <SAM> name (from header): <SystemRootSystem32ConfigSAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 666c <lf>
File size 262144 [40000] bytes, containing 6 pages (+ 1 headerpage)
Used for data: 247/20352 blocks/bytes, unused: 18/4032 blocks/bytes.


* SAM policy limits:
Failed logins before lockout is: 0
Minimum password length        : 0
Password history count         : 0
| RID -|---------- Username ------------| Admin? |- Lock? --|
| 01f4 | Administrador                  | ADMIN  | dis/lock |
| 01f5 | Invitado                       |        | dis/lock |
| 03e8 | Usuario                        | ADMIN  |          |

Modificar la contraseña del usuario Usuario.

$ sudo chntpw -u Usuario SAM

Puede elegir una de las siguientes opciones a realizar sobre la contraseña.

  • Dejar la cuenta sin contraseña (1).
  • Especificar una nueva contraseña para la cuenta (2).
  • Promover al usuario a Administrador (3).
  • Desbloquear y activar la cuenta (4).

Recursos

Errores "Connection reset by peer" durante la conexión a Windows con rdesktop

Introducción

Durante la conexión a máquinas Windows desde Linux Ubuntu utilizando el protocolo Remote Desktop y a rdesktop como herramienta se empezaron a obtener errores de conexión como el siguiente.

ERROR: recv: Connection reset by peer

El problema

rdesktop permite la conexión de escritorio remoto entre máquinas Windows y otros sistemas operativos como Linux, sin embargo no soporta aún el nivel de autenticación de red que implementa por defecto el servicio de Remote Desktop.

La solución

En la máquina Windows que se encuentra ejecutando el servidor de Remote Desktop acceder a la opción del panel de control de Allow remote access to your computer o acceder directamente a las System Properties.

Allow Remote Access - Remote Desktop
Allow remote access to your computer

En la pestaña de Remote y bajo la sección de Remote Desktop seleccionar la opción Allow connections from computers running any version of Remote Desktop (less secure).  Por defecto se encuentra seleccionada la tercera opción.

Allow connections from any Remote Desktop protocol’s version

Otra alternativa

Como otra alternativa de conexión al escritorio remoto que parece no tener el problema de rdesktop con la autenticación de red es freerdp el cual se invoca desde la línea de comando de la siguiente manera.

$ xfreerdp -u USERNAME -d DOMAIN -p PASSWORD HOST

Esta herramienta incluye un parámetro adicional (-g) que encontré muy interesante y que permite escalar en un porcentaje específico la ventana local en la que se despliega el escritorio remoto.

Recursos

Instalación de Cloud9 IDE en Ubuntu 13.04

Introducción

Cloud9IDE_logoDespués de una primera instalación hace poco mas de un año, quedé con la sensación de que este procedimiento era demasiado complejo y me di a la tarea de experimentar un poco en busca de simplificarlo un poco.

Concluyo que el prinicpal obstáculo que tuve durante las pruebas fue la versión de NodeJS de la cual depende Cloud9 IDE.  De momento la mejor opción es utilizar la rama 0.8.x ya que aún no es compatible con la 0.10.x y la 0.9.x se considera inestable.  Al respecto encontré que la herramienta nvm (Node Version Manager) permite gestionar diferentes versiones de Node JS instaladas para ser utilizadas con diferentes aplicaciones de terceros sin que estas interfieran entre sí.

Otra herramienta que ayudó a simplificar el proceso de instalación fue npm (Node Packaged Modules) la cual se encarga ahora de realizar la construcción de Cloud9 IDE y sus dependencias.

A continuación se detallan los pasos necesarios para realizar esta instalación y posteriormente ejecución del software.

Instalación

Prerequisitos

$ sudo apt-get install -y build-essential g++ curl libssl-dev apache2-utils git libxml2-dev

Desinstalar cualquier versión previa de NodeJS que pueda interferir con la versión que se va a utilizar con Cloud9.

$ sudo apt-get remove nodejs

Node Version Manager

El Node Version Manager (NVM) permite gestionar diferentes versiones de NodeJS evitando su instalación y control manual para el uso con software de terceros (como es el caso de Appcelerator Titanium).

$ git clone git://github.com/creationix/nvm.git ~/nvm
$ echo '. ~/nvm/nvm.sh' >> ~/.bashrc && . ~/.bashrc

Node JS

La versión utilizada durante esta instalación fue la 0.8.25 la cual era la última versión disponible de la serie 0.8.x.  Se constató que sucedían problemas con la versión 0.10.12 y se omitió experimentar con la versión 0.9.x al ser esta (impar) inestable.

Para identificar las versiones de Node JS disponibles consulte el listado de archivos de las distribuciones.

$ nvm install v0.8.25
$ nvm use v0.8.25

Cloud9 IDE

$ git clone https://github.com/ajaxorg/cloud9.git
$ cd cloud9
$ npm install

Ejecución

Para ejecutar una instancia de Cloud9 IDE se recomienda utilizar los siguientes comandos que seleccionan la versión de NodeJS a utilizarse y levantan el servicio del IDE.

$ nvm use 0.8.25 && ~/cloud9/bin/cloud9.sh -w /directorio/de/trabajo

Estos son los principales parámetros que puede recibir cloud9.sh.

-w /directorio/de/trabajo Permite especificar el directorio de trabajo que utilizará el IDE.
-p puerto Permite especificar el puerto que utilizará el servicio.  Por defecto es el 3131.
-l interfaz Por defecto el servicio sólo escucha a localhost, esta opción permite escuchar una interfaz diferente.  Utilizar la interfaz 0.0.0.0 para escuchar a través de todas las direcciones IP disponibles.
--username usuario --password contraseña
Permite especificar un nombre de usuario y una contraseña para autenticar el acceso a la instancia del IDE.

 Recursos

Actualizando Ubuntu

Acerca de la política de actualización

La política de actualizaciones del sistema operativo determina que tipos de actualizaciones disponibles serán tenidas en cuenta para ser sugeridas al usuario y ser finalmente instaladas en el equipo.

Las políticas disponibles corresponden a las siguientes.

  1. Tener en cuenta las versiones nuevas y estables (normal).
  2. Tener en cuenta sólo actualizaciones LTS (lts).
  3. Nunca tener en cuenta actualizaciones (never).

Para modificar la política de actualización vigente se debe editar el archivo /etc/update-manager/release-upgrades y ajustar el valor de la variable Prompt.

Este procedimiento también se puede realizar desde la interfaz gráfica de usuario ejecutando la aplicación Software & Updates y bajo el tab de Updates, modificar el valor de la opción Notify me of a new Ubuntu version.

Server Edition

$ sudo aptitude install update-manager-core

$ sudo do-release-upgrade

Desktop Edition

Utilizar la aplicación Update Manager o Software Updater desde la interfaz gráfica de usuario.

Ejecute el Update Manager (System > Administration > Update Manager)  o Software Updater desde Unity.

$ sudo /usr/bin/update-manager

Presione el botón Upgrade el cual se activará únicamente si se detecta una actualización disponible.

Enlaces

Uso de NX 3.5 con GNOME Fallback en Ubuntu 12.10

Introducción

Cómo se mencionó en el post anterior, la versión 3.5 de NX no soporta sistemas de escritorio como Unity o GNOME3 ya que no a su vez no soporta los efectos de escritorio compuesto provistos por Compiz.  Por este motivo es necesario utilizar un sistema de escritorio diferente.

En mi caso decidí experimentar con la versión fallback de GNOME3 con buenos resultados.  A continuación se detallan los proceso de instalación y configuración necesarios para utilzar este manejador de ventanas con NX 3.5.

Instalación de GNOME Fallback en el servidor

Para instalar el sistema de escritorio en el servidor es necesario ejecutar los siguientes comandos.

$ sudo apt-get install gnome-session-fallback
$ sudo apt-get install indicator-applet-appmenu

Verificar los tipos de sesiones disponibles en el servidor

Para listar las sesiones disponibles en el servidor se debe ejecutar el siguiente comando.

$ ls /usr/share/gnome-session/sessions/

gnome.session  gnome-classic.session  gnome-fallback.session  ubuntu.session

Las sesiones gnome y ubuntu las incluye por defecto Ubuntu y hacen referencia a Unity.  Las sesiones gnome-* son las instaladas por GNOME Fallback en el paso anterior, la diferencia entre estos dos tipos de sesiones consiste en que gnome-fallback no utiliza los efectos de Compiz por lo que es preferible utilizarlo en este contexto.

Configurar el cliente de NX para establecer conexiones utilizando GNOME Fallback

Desde el cliente de NX elija la sesión que desea modificar y presione el botón de configuración mostrado en la imagen a continuación.

Configuración del cliente NX
Configuración del cliente NX

En la congiruación de la sesión bajo las opciones del escritorio, seleccione Unix (para utilizar el protocolo NX), Custom (para personalizarlo) y presione el botón Settings.

Configurar sesión de NX
Configurar sesión de NX

En la configuración del escritorio, bajo la sección de aplicación seleccione la opción Run the following command y especifique el siguiente comando, siendo gnome-fallback el sistema de escritorio a utilizar.

gnome-session --session=gnome-fallback

Bajo la sección de opciones se recomienda marcar la opción New virtual desktop como se muestra a continuación.

Configuración de escritorio del cliente NX
Configuración de escritorio del cliente NX

Alternativa del lado del servidor

Si se desea evitar que cada cliente deba realizar esta modificación para utilizar el sistema de escritorio de GNOME Fallback, esta modificación puede realizarse del lado del servidor de la siguiente manera.

$ vi /usr/NX/etc/node.conf
COMMAND_START_GNOME='gnome-session --session=gnome-fallback'

O con la siguiente opción si se desea ejecutar al cliente NX en una ventana y tener mayor control sobre su configuración.

COMMAND_START_GNOME="/etc/X11/Xsession 'gnome-session --session=gnome-fallback'"

Enlaces

Instalación de NX 3.5 en Ubuntu 12.10 utilizando SSH y autenticación basada en contraseñas

Introducción

NX es un producto de NoMachine que permite acceder al escritorio de un servidor remoto.  A diferencia de software similar como VNC, NX ofrece por defecto el cifrado del tráfico a través de conexiones SSH y de SSH con túnel para el protocolo X, NX ofrece un mayor desempeño al optimizar la transmisión de datos.

NoMachine provee una versión gratuita para servidores Linux que se encuentra limitada a dos conexiones concurrentes.

En el pasado realicé la instalación de FreeNX, un fork del proyecto NX original el cual parece que ya no recibe actualizaciones.  En esta ocasión se va a realizar la instalación de NX 3.5 encontrándose también que versiones preliminares de la 4 pueden descargarse para experimentación.

Recomendaciones

En caso de actualizarse de una versión mayor es mejor desinstalar por completo los paquetes antiguos antes de instalar los nuevos.  Inclusive remover (o renombrar) el directorio del software.

$ sudo rm -rf /usr/NX

También debe tenerse en cuenta que la versión 3.5 de NX no soporta los entornos de escritorio que incluyan los efectos de escritorio compuesto provistos por Compiz, por este motivo se tendrán serios problemas al intentar acceder a escritorio remotos utilizando Unity o GNOME3.  En este caso se recomienda instalar otros manejadores de escritorio como XFCE o GNOME Fallback.

El transporte de la información se realiza a través de SSH así que el servicio (OpenSSH o similar) debe estar previamente instalado y funcionando.

Instalación en el cliente

Descargar del siguiente enlace el paquete cliente (NX Client Products) de la plataforma y arquitectura que corresponda.

http://www.nomachine.com/download.php

En este caso se realiza la instalación de la versión 3.5.0 para Ubuntu de 32 bits.

$ sudo dpkg -i nxclient_3.5.0-7_i386.deb

Instalación del servidor

Descargar del siguiente enlace los paquetes correspondientes a la plataforma y arquitectura del servidor.  Del lado del servidor es necesario instalar los paquetes de cliente, nodo y servidor.

http://www.nomachine.com/select-package-server.php?id=1&ids=2

En este caso se realiza la instalación de la versión 3.5.0 para Ubuntu Server de 64 bits.

$ sudo dpkg -i nxclient_3.5.0-7_amd64.deb
$ sudo dpkg -i nxnode_3.5.0-9_amd64.deb
$ sudo dpkg -i nxserver_3.5.0-11_amd64.deb

En algunas ocasiones la instalación del paquete servidor falla siendo requerido ejecutar la siguiente instrucción antes de volver a correr el comando de instalación mencionado anteriomente.

$ sudo /usr/NX/scripts/setup/nxserver --install

Autorizar a un usuario para realizar conexiones

Para autorizar a un usuario del sistema a realizar conexiones a su escritorio remoto se debe ejecutar el siguiente comando.

$ sudo /usr/NX/bin/nxserver --useradd USERNAME

Para mas información acerca de la gestión de los usuarios consultar la sección #5 (NX Users Administration on the Server Host) del NX Server Administrator’s Guide.

Realizar la conexión desde el cliente

Desde el equipo cliente ejecute la aplicación nxclient.

$ /usr/NX/bin/nxclient

Desde ella especifique la información básica para la conexión, incluyendo como mínimo la siguiente información.

  1. Nombre para la sesión
  2. Dirección o nombre del servidor
  3. Puerto del servicio SSH
  4. Nombre de usuario para realizar la conexión
  5. Contraseña del usuario especificado

Enlaces

  1. Getting Started with NX.
    http://www.nomachine.com/documents/getting-started.php
  2. NX Free Edition (for Linux & Solaris)
    http://www.nomachine.com/select-package-server.php?id=1&ids=2
  3. Documentación de instalación y configuración.
    1. Cliente
      http://www.nomachine.com/documents/client/install.php
      http://www.nomachine.com/documents/configuration/client-guide.php
    2. Nodo
      http://www.nomachine.com/documents/node/install.php
    3. Servidor
      http://www.nomachine.com/documents/server/install.php
      http://www.nomachine.com/documents/admin-guide.php
  4. Instalación de NoMachineNX en Ubuntu
    https://help.ubuntu.com/community/NomachineNX
  5. Why can’t I run the Unity or the Gnome 3 desktop environments with NX?
    http://www.nomachine.com/ar/view.php?ar_id=AR0500591

Actualizar a LibreOffice 4 desde Ubuntu 12.10 (o posteriores)

Introducción

La actualización de los paquetes de LibreOffice suele tomar un tiempo adicional desde que son oficialmente liberados hasta que se encuentran disponibles en los repositorios de Ubuntu para ser actualizados.  Si se desea realizar esta actualización rápidamente y utilizando el sistema de paquetes de Ubuntu es necesario agregar el repositorio oficial de LibreOffice al sistema como se muestra a continuación.

Método #1: para una versión específica (recomendado)

Existen dos formas básicas en las que es posible instalar una versión recién publicada de LibreOffice.  El primero de los métodos corresponde con agregar el repositorio exacto de la versión específica que se desea instalar, en este caso, la 4.x.  Esto se hace de la siguiente manera.

$ sudo add-apt-repository ppa:libreoffice/libreoffice-4-0
$ sudo apt-get update
$ sudo apt-get dist-upgrade

Método #2: para la versión mas reciente

Agregando el repositorio general de LibreOffice es posible mantener el sistema actualizado a la última versión disponible.  Debe tenerse en cuenta que es posible que se actualice el software a versiones no necesariamente estables y se actualicen también paquetes relacionados con LibreOffice.  Para hacer esto se deben realizar los pasos mostrados a continuación.

$ sudo add-apt-repository ppa:libreoffice/ppa
$ sudo apt-get update
$ sudo apt-get dist-upgrade

Instalar otros manejadores de ventanas en Linux Ubuntu

GNOME3

Para instalar la versión completa (incluyendo el Session Fallback)  se debe ejecutar el siguiente comando.

$ sudo apt-get install gnome-shell

Si por el contrario sólo se desea instalar el GNOME Session Fallback y ahorrar un poco de espacio, es necesario ejecutar el siguiente comando.

$ sudo apt-get install gnome-session-fallback

Cinnamon

Cinnamon es el fork de GNOME3 que hizo la gente de Linux Mint para solucionar los cambios de diseño que disgustaron a muchos usuarios de la versión original mediante el uso de extensiones.

$ sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-stable
$ sudo apt-get update
$ sudo apt-get install cinnamon

 Mate

MATE es el fork de GNOME2.  Si se desea instalar un escritorio similar al presentado por la versión anterior de GNOME la mejor opción es instalar MATE ya que la versión 2 de GNOME se encuentra oficialmente descontinuada.

$ sudo add-apt-repository "deb http://packages.mate-desktop.org/repo/ubuntu quantal main"
$ sudo apt-get update
$ sudo apt-get install mate-archive-keyring
$ sudo apt-get update
$ sudo apt-get install mate-core
$ sudo apt-get install mate-desktop-environment