Instalando SopCast en Ubuntu

El otro día os hablaba de cómo instalar AceStream en Ubuntu y derivados, y voy a complementarlo añadiendo otro popular software para ver retransmisiones por streaming p2p: SopCast.

He testeado en un Lubuntu 15.10 de 32bits y me ha funcionado sin problema. Los comandos serían los siguientes:

#añadimos el repositorio e instalamos el ppa, sin más
sudo add-apt-repository -y ppa:lyc256/sopcast-player
sudo apt-get update
sudo apt-get install sopcast-player

Otra opción es utilizar un paquete .deb de los que hay en este enlace, aunque no lo he probado y no se qué tal funciona.

Instalar AceStream en Linux

Acostumbro a ver el Seis Naciones en el bar, en Compostela tenemos la suerte de que A Novena Porta le de preferencia al rugby sobre el resto de deportes, pero justo este sábado estoy en casa de mis padres, y quería ver los dos partidos de la tarde. Y para ello necesitaba AceStream. En Windows su instalación es la clásica «todopalante«. En Ubuntu y derivados es posible usar este software para ver streamings p2p, pero requiere instalar desde línea de comandos.

#agregamos repositorios
echo 'deb http://repo.acestream.org/ubuntu/ trusty main' | sudo tee /etc/apt/sources.list.d/acestream.list

#y la clave pública
sudo wget -O - http://repo.acestream.org/keys/acestream.public.key | sudo apt-key add -

#actualizamos apt desde el repositorio
sudo apt-get update

#e instalamos el AceStream
sudo apt-get install acestream-full

En caso de que uses ElementaryOS puedes tener un problema y que te aparezca el mensaje Error «Cannot connect to engine. Check if engine installed.» En ese caso puedes probar dos comandos para arrancar el motor de AceStream manualmente:

#prueba esto
acestreamengine --client-gtk --gui-gtk
#y si tampoco va, con esto ya debería
acestreamengine --client-console

En Firefox el plugin debería arrancar automáticamente, en Chrome creo que lo tendrías que arrancar de forma manual.

Deshabilitar el teclado de un portátil en linux

Ayer el teclado del portátil me pegó un susto muy cabrón. No tengo claro qué le pasa (hoy ha dado un poco por culo también) pero de golpe hay teclas que se «pulsan» solas. Ayer pasaba con el CTRL y hoy con la flecha derecha. La parte buena es que tenía un teclado USB, y con cierto esfuerzo logré deshabilitar el teclado para funcionar sólo con el externo. Os explico como:

Empezamos abriendo una consola de comandos, y ahí ponemos

ximput --list

Esto sacará un listado de los dispositivos de entrada del equipo, tal que así:

consola xinput

Como puedes ver en este caso es el dispositivo número 11 (no siempre es el mismo, depende de si se han conectado más dispositivos externos, por ejemplo). Entonces bastaría con un comando para deshabilitar, y otro para rehabilitar:

#este desconecta
#cambia el 11 por el número de tu dispositivo
xinput set-int-prop 11 "Device Enabled" 8 0

#este reconecta
xinput set-int-prop 11 "Device Enabled" 8 1

Esta configuración se pierde al reiniciar, no es permanente. Podrías incluir el comando en el init.d para que se ejecute en la carga… pero si has insertado un teclado USB puede que el número no coincida.

FTP en línea de comandos

El otro día me encontraba instalando un servidor con varias instancias virtualizadas de Windows 2k12, que por cuestiones de rendimiento iban sin entorno gráfico (el llamado modo Server Core). Necesitaba descargar una serie de archivos desde un servidor FTP, así que tuve que recurrir a la línea de comandos… y eso me recordó que nunca habíamos tocado aquí el tema.

Para conectar el ftp basta con teclear en la consola ftp seguido de la dirección del servidor al que nos queremos conectar. Por ejemplo:

ftp servidordeprueba.com

Tras eso nos debería pedir usuario y contraseña (o no, eso depende de la configuración del servidor, pero lo normal es que sí). Una vez conectados disponemos de los siguientes comandos para trabajar:

  • ls o dir: Dependiendo de si estamos en un entorno Unix o Windows. Nos listará los archivos existentes en el directorio.
  • cd: Tanto en Unix como en Windows es el comando que se utiliza para navegar entre carpetas.
  • pwd: Si de tanto usar el cd te pierdes y nor recuerdas en qué directorio estás, este comando te lo dirá.
  • status: Nos informa del estado de nuestra conexión con el servidor.
  • open: Si se cierra tu conexión ftp, si quieres cambiar de servidor o si al ejecutar el comando ftp no has puesto a qué servidor te conectas, este comando va seguido de la dirección del servidor con el que queremos conectar.
  • binary: Aplicando este comando definimos que los datos que se descargarán vendrán serán un archivo binario (ejecutables, imágenes, vídeos, audio). Hay otro modo, del que hablaremos a continuación, para archivos de texto. No es recomendable descargar archivos binarios en modo texto, ya que probablemente se corrompan.
  • ascii: Al igual que binary define el tipo de archivo que descargaremos. Se recomienda para archivos txt,htm, html, css,asp, vbs, js, xml, php… en fin, todo lo que sea texto plano.
  • get: Es el comando utilizado para descargar desde el servidor. La sintaxis es get nombreDeArchivo rutaDondeLoGuardaremos. Si no ponemos ruta de destino lo descargará en el directorio en el que estamos. Existe la variable mget que nos permite descargar múltiples archivos, o reget para reiniciar una descarga cortada.
  • put: Lo contrario que el anterior, la sintaxis es similar, pero en este caso en lugar de descargar desde el servidor subimos archivos al mismo.
  • rename: Nos permite renombrar un fichero del servidor.
  • delete: El nombre es bastante intuitivo, ya que sirve para borrar ficheros del servidor. No funciona con carpetas. Mucho cuidado al usarlo, no vaya a ser que borres lo que no debieras.
  • mdelete: Como delete, pero con la diferencia es que borra varios archivos en lugar de uno. Basta con ponerlos todos, separados por espacios.
  • rm: Si lo que quieres es borrar una carpeta, este es tu comando. Sólo funciona con carpetas vacías, así que tendrás que borrar antes los ficheros que contiene.
  • chmod:Un viejo conocido para los usuarios de UNIX. El comando chmod nos permite modificar los permisos de lectura y escritura de un archivo o carpeta.
  • Finalmente bye y quit nos permiten salir del ftp para volver a la consola de comandos.

Y en caso de usar un sistema linux el comando ! nos permitirá ejecutar comandos en nuestra shell sin salir del ftp. Basta con usar ! seguido de un comando.

Existen más comandos y opciones, pero estos son los más usados y básicos. Puedes ver información sobre el resto usando el comando HELP

Instalando Guest Additions de VirtualBox en Lubuntu 15.10

Primer contacto con una versión 15.10 de Ubuntu: esta mañana he tenido que montar una máquina vitual en el curro para un experimento. Por temas de ligereza ha sido un Lubuntu, la versión con el ligero escritorio LXDE, concretamente la vesión de 32 bits.

Vamos a meternos en harina (en el tema de las guest additions, no era un chiste sobre Albert Rivera) ¿Cómo instalo la Guest Additions?

  • Abrimos un terminal y ejecutamos sudo apt-get install virtualbox-guest-additions-iso
  • Le llevará un ratillo (al menos a mi me lo llevó). Al acabar vamos al menú desplegable de la esquina inferior izquierda, seleccionamos Preferencias y desde allí escogemos Software y Actualizaciones. Os dejo esta imagen ilustrativa:
    Lubuntu software actualizacións
  • Ahora nos queda desmarcar las opciones de usar los controladores de Virtual Box en lugar de los de serie del sistema operativo, tal que así: Software y Actualizaciones

Y tras un reinicio la cosa debería ir ya como la seda.

Ultimate Boot CD Live: Creando un usb arrancable y activar la persistencia.

Hoy descubría la existencia de un interesante proyecto ¿Recordais Ultimate Boot Cd? Se trata de un disco de arranque con utilidades muy tipo Hirens Boot Cd. La cuestión es que han sacado una versión de Ultimate Boot CD basado en un LiveCD de Debian, para poder usar las aplicaciones desde entorno gráfico: Ultimate Boot CD Live. Incluye una colección de freeware, shareware y software libre para poder realizar tareas de reparación y recuperación del sistema que puedes ver listas en la página del proyecto.

El proyecto está guay, pero siendo prácticos a día de hoy muchos equipos, sobre todo portátiles, no tienen cd (mismo el caso del equipo desde el que estoy escribiendo) ¿cómo creamos un cd arrancable con Ultimate Boot CD Live? Pues sin mucha dificultad porque,a fin de cuentas, se trata de una distribución Live de Linux como otra cualquiera. En caso de que seais usuarios de Windows os tocará recurrir a opciones como Universal USB Installer o LinuxLive USB Creator. En caso de estar usando Linux, yo suelo ser partidario de Unetbootin. En todo caso los tres son bastante intuitivos, basta con descargar la ISO desde el enlace al proyecto y seleccionarla luego desde el programa que useis para crear el USB. Con LinuxLive USB Creator ya explicamos aquí en su día cómo hacerlo, y con el resto lo podéis encontrar con una simple búsqueda.

Captura de Pantalla de UBCDLive

Ahora vamos con la parte de la persistencia. En caso de que querais guardar cambios en el USB existe una forma de conseguir un giga de espacio para persistencia. Con el cd una vez creado tenéis que buscar el archivo persistence.bz2 y descomprimirlo, de forma que obtendréis un archivo llamado persistence de un giga de tamaño que es en el que se almacenarán los cambios. Además os tocará modificar el archivo isolinux/live.cfg y añadir toram persistence a los parámetros de arranque tal que así:

label live-486
   menu label ^Live (486)
   menu default
   linux /live/vmlinuz
   initrd /live/initrd.img
   append boot=live config username=root vga=normal toram persistence

label live-486-failsafe
   menu label ^Live (486 failsafe)
   linux /live/vmlinuz
   initrd /live/initrd.img
   append boot=live config username=root memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal toram persistence

Y con esto ya estaría la opción habilitada, y vuestro pendrive listo para ayudaros a rescatar el sistema.

Comprimiendo en zip desde línea de comandos en Linux (Ubuntu/Debian)

Esta mañana a uno de mis equipos se empezó a ir un poco la pinza. No me digais por qué pero si intentaba comprimir utilizando la utilidad gráfica por defecto de Ubuntu no me lo permitía, se quedaba tirado el programa al hacerlo. Al final se arregló reinstalando, pero el caso es que en aquel momento no tenía conexión a internet para hacerlo y necesitaba crear un zip para pasarle una serie de archivos a una usuaria de Windows. Así que tocó usar la consola de comandos.

¿Cómo hice para comprimir la carpeta? Bueno la sintaxis del comando zip es

zip nombreDeArchivoFinal archivoacomprimir1 archivoacomprimir2…

En el ejemplo os dejo varias posibilidades comentadas:

#para incluir subdirectorios
#hay que añadir la opción -r
zip -r resultado.zip carpeta1

#con el comodín * podemos comprimir
#todos los ficheros dentro de una carpeta
zip resultado.zip *

#zip nos permite proteger el archivo
#con una contraseña, pero hay que
#ver que su algoritmo no es muy seguro
zip --password MI_CONTRASEÑA_ELEGIDA protegido.zip archivo1 archivo2 archivo3

#Una opción para codificar con más seguridad sería usar GPG
#primero comprimimos en zip
#luego codificamos la carpeta
#nos pedirá que insertemos la contraseña tras el comando GPG
zip -r resultado.zip carpeta1
gpg -c resultado.zip

#otra opción es usar openssl para encriptar
#primero comprimimos en zip
#luego codificamos la carpeta
#y nos pedirá password igual que antes
zip -r resultado.zip carpeta1
openssl aes-256-cbc -e -in resultado.zip -out resultado.zip.aes

En los ejemplos hemos usado criptografía de clave simétrica, pero siempre podeis investigar formas de utilizar algoritmos de clave pública/privada, ya que tanto gpg como openssl están pensados para poder hacerlo.

Uniendo documentos pdf en Linux con pdftk

En el anterior artículo hablábamos sobre cortar pdf en distros Linux utilizando la utilidad pdftk. Ahora vamos a ver cómo hacer lo contrario: unir varios pdf en uno solo.

No repetiré los pasos de instalación de pdftk porque están en el artículo anterior. Obviando esto nos metemos en harina: lanzamos un terminal y nos ponemos en la carpeta en la que están los pdf y cuando estemos allí usamos el siguiente comando (en el ejemplo fusionaremos dos archivos que se llaman archivo1.pdf y archivo2.pdf en uno nuevo llamado nuevoArchivo.pdf)

pdftk archivo1.pdf archivo2.pdf cat output nuevoArchivo.pdf

Y luego podemos combinar ambas ideas: cortar y unir en un solo comando. En el ejemplo extraeremos las dos primeras páginas del archivo1, la quinta del archivo2 y la octava del archivo1 y crearemos el archivo3 con estas en ese orden.

pdftk A=archivo1.pdf B=archivo2.pdf cat A1-2 B5 A8 output archivo3.pdf

Como veis nos servimos del comando cat para concatenar archivos y de output para dirigir la salida de cat hacia un nuevo archivo pdf.

Cortando y dividiendo documentos pdf en Linux

No es extraño (que cantaba Tom Jones) el tener que cortar un documento pdf. Hoy mismo me mandaron dos facturas en el mismo documento y las necesitaba separadas porque tenía que enviarlas a dos correos distintos. ¿Cómo se puede solucionar esto?

Lo primero es instalar pdftk:

#si lo hacemos en una distro Ubuntu/Debian
sudo apt-get install pdftk

#Si lo hacemos en Fedora/RedHat
sudo yum install pdftk

Una vez instalado la forma más simple de cortar el pdf es usan burst, que lo que hará será generar una página independiente por cada una de las páginas del pdf original.

pdftk archivo.pdf burst

Esto generará varios archivos llamados pg_001.pdf, pg_002.pdf… en mi caso me bastaba con esto porque eran dos páginas pero ¿qué pasa si manejas un pdf de 600? Es probable que no quieras 600 archivos nuevos. Por suerte pdftk es una herramienta potente que nos da gran flexibilidad a la hora de trabajar, y disponemos de un comando que nos permite extraer una serie de páginas concretas de un documento hacia un nuevo archivo. Vamos con el ejemplo, donde sacaremos las páginas de la 30 a la 45 de un archivo y generaremos uno nuevo con ellas:

$ pdftk A=archivo.pdf cat A30-45 output archivofinal.pdf

Y es más, podemos extraer páginas de dos pdf distintos y sacarlas todas en un mismo documento. En el ejemplo sacaremos las páginas del 10 al 15 del documento 1 y las 15-18 del documento 2:

$ pdftk A=archivo.pdf B=archivo.pdf cat A10-15 B15-18 output archivofinal2.pdf

Y próximamente veremos cómo fusionar archivos.

Carpetas compartidas en red en Ubuntu: Instalando y configurando una con NFS

Vamos a ver cómo compartir una carpeta utilizando una distribución de linux de la familia Debian (Ubuntu, Debian, Linux Mint). Y vamos a ver cómo hacerla mediante línea de comandos para que sea universal para todas las distribuciones (en las distros «no Debian» no cambiaría mucho la cosa, exceptuando la parte de instalar los paquetes el resto iría más o menos igual, creo)

El primer paso es instalar los paquetes nfs-kernel-server,nfs-common y rpcbind en el equipo que servirá la carpeta. Para ello usamos el siguiente comando:

sudo apt-get install nfs-kernel-server nfs-common rpcbind

Tras esto reiniciamos el equipo.En los equipos clientes, que se van a conectar con la carpeta, tenemos que instalar sólo los dos últimos paquetes, no es necesario el del servidor:

sudo apt-get install nfs-common rpcbind

Lo siguiente es crear la carpeta a compartir, en este caso se llamará compartida, y configurar los permisos para no tener problemas al acceder a ella. En este caso daremos a los usuarios permisos totales sobre la carpeta y no habrá grupo propietario, para que puedan hacer lo que les plazca.

sudo mkdir /compartida
sudo chown nobody:nogroup /compartida
sudo chmod -R 777 /compartida

Ahora tenemos que decirle al sistema qué carpetas vamos a compartir editando el archivo /etc/exports. La sintaxis es rutaCarpeta cliente_A(opciones) cliente_B(opciones). Tenemos múltiples opciones a la hora de definir a los clientes: una dirección ip o un rango de ellas, el nombre DNS del equipo o caracteres comodín (para dar acceso a cualquier equipo basta poner el comodín *).

En cuanto a las opciones son las siguientes:

  • ro(read-only): La carpeta compartida será de sólo lectura. Si no se define, es la opción por defecto.
  • rw (read-write): El usuario tiene permisos para escribir en la carpeta y hacer cambios en ella.
  • wdelay: El servidor NFS no escribe en el disco si espera otra solicitud inminentemente. Esto reduce los accesos a disco mejorando el rendimiento. Sólo funciona cuando usamos la opción sync.
  • no_wdelay: Desactiva wdelay.
  • sync: No permite responder peticiones antes de escribir los cambios pendientes. Se trata de la opción predeterminada.
  • async: Deshabilita sync. Esto mejora el rendimiento pero provoca que exista el riesgo de corrupción en los archivos si se produjese un corte de luz o una caída de la red.
  • subtree_check: Si el directorio compartido es un subdirectorio de un sistema de archivos mayor NFS comprobará los directorios por encima de éste, verificando sus permisos. Se trata de la opción predeterminada.
  • no_subtree_check: Deshabilita la característica anterior. Así se consigue agilizar el envío de la lista de archivos, pero reduciendo la seguridad del sistema.
  • root_squash: Evita que los usuarios con privilegios mantengan los permisos administrativos sobre la carpeta compartida, cuando se conectan remotamente.Es la opción activada por defecto
  • no_root_squash: Deshabilita root_squash.

Así que en nuestro archivo /etc/exports toca añadir la siguiente línea, con la que daremos permisos de lectura/escritura, activaremos la opción de sync y la de no comprobar todo el árbol superior a todos los clientes que se conecten:

#recordamos: primero la ruta
#después el cliente, en este caso * para todos
#y finalmente las opciones
/compartida *(rw,sync,no_subtree_check)

Y tras eso, toca reiniciar el servidor nfs:

sudo /etc/init.d/nfs-kernel-server restart

Lo siguiente será crear un punto de montaje para la carpeta compartida en los equipos cliente (vamos a suponer que la IP del servidor es 192.168.1.2):

sudo mkdir -p /mnt/nfs/compartida
#aunque ya dimos permisos a la carpeta
#también se los damos al punto
#de montaje
sudo chmod -R 777 /mnt/nfs
#y montamos la carpeta
sudo mount 192.168.1.2:/compartida /mnt/nfs/compartida

Y tras esto ya deberías poder crear y leer archivos en la carpeta compartida desde los clientes conectados en la red. Más adelante veremos algunas cosas sobre carpetas compartidas.