AÑO ----------- 0
NÚMERO -------- 9
FECHA: 2013-07-29
#9
“ESCORPIÓN”
HD Hackers &
+
DEVELOPERS
Magazine digital de distribución
mensual sobre Software Libre, Hacking y Programación
para profesionales del sector de Tecnologías de la Información
Staff
Eugenia Bahit
María José Montes Díaz
Milagros Infante Montero
Indira Burga
Sergio Infante Montero
Mario Iván Ruvalcaba
Arquitecta GLAMP & Agile Coach
Técnica en Informática de Gestión
Est. Ingeniería de Sistemas
Ingeniera de Sistemas
Ingeniero de Software
Profesional Técnico en Informática
Hackers & Developers Magazine se distribuye bajo una licencia Creative Commons Atribución
NoComercial CompartirIgual 3.0 Unported . Eres libre de copiar, distribuir y compartir este material.
FREE AS IN FREEDOM!
HD
Hackers &
DEVELOPERS
+
#9
Hackers & Developers Magazine, es
una iniciativa sin fines de lucro
destinada al fomento y difusión de
las tecnologías libres presentes o
futuras, bajo una clara óptica
docente y altruista, que resulte de
interés técnico y/o científico a
profesionales
de
sector
Tecnologías de
Información.
Hackers & Developers Magazine se
sostiene económicamente con el
apoyo de
comunidad, no
recibiendo subvención alguna de
ninguna empresa, organización u
organismo
Gobierno.
Necesitamos de tu apoyo para
poder mantener este proyecto.
del
la
la
de
Ayúdanos a continuar
con este proyecto
Puedes
hacer un donativo ahora,
de 10, 15, 25, 50, 100 o 150 USD
para ayudar a que Hackers &
Developers Magazine pueda seguir
publicándose de forma gratuita,
todos los meses. Puedes donar con
PayPal o Tarjeta de Crédito a través
del siguiente enlace:
www.hdmagazine.org/donar
“Hacker es alguien que disfruta
jugando con la inteligencia”
Richard Stallman
Free Software, Free Society
(Pág. 97), GNU Press 2010-2012
En esta edición:
Recupera la contraseña de root en GNU/Linux.......................................4
Conexiones SSH y SFTP desde Python con paramiko..............................7
Piwik: Una plataforma de análisis web alternativa..............................12
Página Man ¿cómo crearlas?................................................................24
Monitorización del Sistema con Conky.................................................33
Creando capturas de pantalla para tus manuales con Shutter.............39
Trabajando con GIT II...........................................................................45
KILL & KILLALL: Asesinato en Primer Grado.........................................51
El poderoso virtualenvwrapper............................................................55
Y LAS SECCIONES DE SIEMPRE:
ASCII Art...................................................................... Pág. 61
Este mes: Scorpion
Zona U!........................................................................ Pág. 62
La comunidad de nuestros lectores y lectoras
Créditos
Hackers & Developers Magazine es posible gracias al compromiso de:
Responsable de Proyecto
Eugenia Bahit
Responsables de Comunicación
Indira Burga (Atención al Lector) - Milagros Infante (Difusión)
Staff
Eugenia Bahit
Arquitecta GLAMP & Agile Coach
www.eugeniabahit.com
Indira Burga
Ingeniera de Sistemas
about.me/indirabm
Milagros Infante Montero
Estudiante de Ingeniería en Sistemas
www.milale.net
María José Montes Díaz
Técnica en Informática de Gestión
archninfa.blogspot.com.es
Sergio Infante Montero
Ingeniero de Software
neosergio.net
Colabora en esta edición:
Fabio Durán Verdugo
Hackers & Developers Magazine agradece a los portales que nos ayudan con la difusión del proyecto:
Difusión
www.debianhackers.net
www.desarrolloweb.com
www.desdelinux.net
E-mail de Contacto:
[email protected]
Web Oficial: www.hdmagazine.org
Cuenta Twitter Oficial: @HackDevMagazine
Hackers & Developers Magazine – Año 0, Número 9 4
Recupera la contraseña
de root en GNU/Linux
I
N
M
D
A
S
Y
S
Aquí os dejo un pequeño truco que nos permitirá
restablecer la contraseña de root.
Escrito por: María José Montes Díaz (Archera & Programadora)
Estudiante de Grado Ingeniería en Tecnología de la información. Técnico
en informática de gestión. Monitora FPO. Docente de programación
Python y Scratch para niños de 6-12 años. Activista del software libre y
cultura libre.
Webs:
Blog: http://blog.archninfa.org/
Redes sociales:
Twitter: @MMontesDiaz
U
tilizamos muchas contraseñas y, por temas de seguridad, no usamos la misma
para todo, pero ¿qué ocurre si olvido la contraseña de root? Pues veamos un
método para restablecerla.
Lo primero que debemos hacer es decirle a nuestro gestor de arranque que, en lugar de
arrancar un modo normal, inicie sólo un terminal con Bash. Para ello, en el inicio del
sistema, tenemos la posibilidad de editar las entradas del gestor de arranque. Veamos
cómo se haría para Lilo y Grub:
LILO
Presionamos [Tab], y añadimos a la entrada init=/bin/bash
Linux
boot:Linux init=/bin/bash
GRUB
Podemos editar la entrada seleccionada pulsando e. Buscamos la entrada linux.
Podemos ver un ejemplo en la imagen:
©2013 HDMagazine.org – Creative Commons Atribución NoComercial CompartirIgual 3.0 Unported
Pág. 5
Una vez localizada la entrada, al final de línea, en este caso detrás de quiet, añadimos:
init=/bin/bash
Una vez editada la entrada, pulsamos F10 para continuar.
Nuestro sistema arrancará en un terminal con Bash, como usuario root y con el sistema
de archivos montado como sólo lectura. Lo siguiente, cambiar el modo a
lectura/escritura:
mount -o remount -rw
Y ya podemos restablecer la contraseña ejecutando:
passwd root
Sólo nos queda reiniciar el sistema:
/sbin/shutdown now -arn
©2013 HDMagazine.org – Creative Commons Atribución NoComercial CompartirIgual 3.0 Unported
Pág. 6
Hackers & Developers Magazine – Año 0, Número 9 7
Scripting para SysAdmins:
Conexiones SSH y
SFTP desde Python
con paramiko
G
N
I
T
P
I
R
C
S
N
O
H
T
Y
P
Crear conexiones SSH con Python, es tan simple como
escribir unas pocas líneas de código gracias al módulo
paramiko1 y con él, comenzamos la nueva serie de
artículos «Scripting para SysAadmins», especialmente
diseñada para Administradores de Sistemas que
deseen incursionar en la programación.
Escrito por: Eugenia Bahit (GLAMP Hacker & eXtreme Programmer)
Eugenia es Arquitecta de Software, docente e instructora de
tecnologías GLAMP (GNU/Linux, Apache, MySQL, Python y PHP) y Agile
coach (UTN) especializada en Scrum y eXtreme Programming. Miembro
de la Free Software Foundation, The Linux Foundation y Debian
Hackers. Creadora de python-printr, Europio Engine y colaboradora de
Vim.
Webs:
Cursos de programación: www.cursosdeprogramacionadistancia.com
Web personal: www.eugeniabahit.com
Redes sociales:
Twitter / Identi.ca: @eugeniabahit
C
ombinar el poder de SSH con el de Python es un sueño muy fácil de cumplir: solo
basta con recurrir al módulo paramiko para que con unas pocas líneas de código,
podamos crear scripts que nos permitan crear conexiones SSH y ejecutar
comandos de forma remota.
import paramiko
paramiko permite que el usuario se valide tanto por contraseña como por par de llaves,
1
https://pypi.python.org/pypi/paramiko
por lo cual es ideal para autenticar usuarios más allá de las políticas del servidor.
Conexión con autenticación por contraseña
El siguiente, es un ejemplo de conexión estándar autenticada por contraseña:
import paramiko
# Inicia un cliente SSH
ssh_client = paramiko.SSHClient()
# Establecer política por defecto para localizar la llave del host localmente
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# Conectarse
ssh_client.connect('123.456.78.90', 22, 'user', 'secretpassword')
# Ejecutar un comando de forma remota capturando entrada, salida y error estándar
entrada, salida, error = ssh_client.exec_command('ls -la')
# Mostrar la salida estándar en pantalla
print salida.read()
# Cerrar la conexión
ssh_client.close()
Como se puede observar, utilizar paramiko es sumamente simple y no tiene demasiada
ciencia. El único “truco” a tener en cuenta, es establecer la política por defecto para la
localización de la llave del host en el ordenador del cliente. De lo contrario, si no se
encontrara la llave del host (host key, usualmente localizada en el archivo
~/.ssh/know_hosts), Python nos arrojaría la siguiente excepción de paramiko:
raise SSHException('Unknown server %s' % hostname)
paramiko.SSHException: Unknown server 123.456.78.90
Un consejo: para evitar dejar la contraseña almacenada en texto plano (lo cual es de sumo riesgo y sin
sentido), éste se le puede solicitar al usuario mediante getpass.
from getpass import getpass
import paramiko
clave = getpass('Clave: ')
HOST = '123.456.78.90'
PUERTO = 372
USUARIO = 'juanperez'
©2013 HDMagazine.org – Creative Commons Atribución NoComercial CompartirIgual 3.0 Unported
Pág. 8
datos = dict(hostname=HOST, port=PUERTO, username=USUARIO, password=CLAVE)
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(**datos)
entrada, salida, error = ssh_client.exec_command('ls -la')
print salida.read()
ssh_client.close()
Conexión autenticada por par de llaves
Para conectarse evitando la utilización de una contraseña, se pudo haber creado
previamente, una llave pública que el usuario debió enviar al servidor, para que el
servidor la pueda contrarrestar contra la llave privada del usuario. En este caso, solo
podrá bastar con no enviar la contraseña para autenticar al usuario:
import paramiko
HOST = '123.456.78.90'
PUERTO = 372
USUARIO = 'juanperez'
datos = dict(hostname=HOST, port=PUERTO
Comentarios de: hd magazine 09 201307 (0)
No hay comentarios