A Django site.
Junio 25, 2011
» NIS servicio para validar usuarios

Acabo de terminar un pequeño manual NIS servicio para validar usuarios que he publicado en WikiLibros.

Posiblemente, algunos piensen que me he alejado de la cúspide tecnológica para remitirme a los principios de la informática (NIS se remonta al inicio de la década del ’90), pero hay que reconocer que NIS es rápido, fácil y está ahi pronto para usar.

Por último comentar que me he decidido a ir compartiendo mis manuales personales en WikiLibros, y obviamente, si alguien ve que merece un ajuste o corrección, pues adelante!, editar para que sea más útil para todos.

Febrero 2, 2010
» Automatizando SSH

Algnas veces me ha tocado escriir líneas de ssh bastante complejas, como por ejemplo:

ssh -1 -p 23 -l root -i /etc/ssh/key01 -o CheckHostIP=no 192.134.27.24

que realmente terminan siendo un incordio, cuando esa conexión debe ser vuelta a realizar para repetir tareas de administración remota. Entonces, este artículo es un resúmen de algunos trucos de automatización que he logrado aprender hasta ahora, para hacer mi ssh más fácil y mi vida también.

1. el nombre

Escribir la IP 192.134.27.24 cada vez que me conecto es antidiluviano y no escala a IPv6. Así que lo ideal es disponer de un DNS bien configurado al cuál recurrir.

Lamentablemente en redes internas he visto que asignan nombres a las máquinas que resultan más difíciles que la dirección IPv4 misma, por ejemplo: sssd2p1r3db.sss.com, que significa sss es el nombre de la empresa, datacenter 2, piso 1, rack 3, db pues es el server de base de datos. Fantástico! Cómo no recordarlo? Claro, despues uno ve que terminan usando la IP.

Así que llamemos a nuestro servidor 192.134.27.24 sssd2p1r3db como “tito” (o cualquier otro nombre que me resulte fácil de recordar)

Para que funcione el ssh a tito debo llegar a la IP. Y esta tarea de personalización de los nombres en la red la hace el archivo /etc/hosts. Edito el archivo y agrego:

# Servidor sssd2p3r3db
192.134.27.24 tito

A partir de ahora, todo lo que yo haga a nivel de red con el nombre “tito” va a funcionar desde ssh tito, ping tito, hasta http://tito en el Firefox.

2. las opciones ssh

Las opciones del ssh que son necesarias para esta conexión de ejemplo son: -1 -p 23 -l root -i /etc/ssh/key01 -o CheckHostIP=no, que no es necesario explicar su significado, pues todas estas opciones están a un man de distancia.

El archivo que permite automatizar todo esto para todos los usuarios es /etc/ssh/ssh_config y para un usuario en específico es el archivo $HOME/.ssh/config. Edito el archivo y creo una entrada Host acorde a mis necesidades:

Host tito
Protocol 1
Port 23
User root
IdentityFile /etc/ssh/key01
CheckHostIP no

Y ya está!

Ahora puedo escribir ssh tito y mi conexión va a ser realizada exactamente como si escribiera toda la linea del principio.

Solo una aclaración: la sentencia Host funciona por string, es decir que si escribo ssh 192.134.27.24 no va a producir el mismo efecto de levantar los datos del ssh_config, aunque me esté conectando al mismo servidor.

3. Bash completion

Y por último, hacer que mi Bash permita usar tabulador para los nombres caprichozos y fáciles que he colocado a mis servidores… porque?, a ver: nadie pretende que me acuerde que el server se llama “tito”, es mucho más acordarme que empieza con “t” y sigue con “algo” ;)

Edito ~/.bashrc y agrego:

_completossh ()
{
actual=${COMP_WORDS[COMP_CWORD]};
COMPREPLY=($(compgen -W ‘$(cat /etc/ssh/config | grep “^Host\b” – | sed -e “s/Host //”)’ — $actual))
}
complete -F _completossh ssh

Y ahora puedo escribir ssh t + tabulador, y me completará “tito”. Y si tengo más de un servidor que comience con “t” pues dar dos veces tabulador y me muestra la lista.

4. Algunos documentos para leer del tema

Mayo 4, 2009
» Twitteando desde la consola

Hace rato que no actualizo mi Twitter, pero hoy de casualidad me topé con la forma de poder publicar en Twitter desde la consola de Linux (y también de las XO, obviamente), así que cree este simple script:

?Descargar tw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 #!/bin/bash
# Script que permite publicar un mensaje en Twitter desde la consola Linux
USUARIO=nombre-usuario-twitter    #CAMBIAR!!!
echo "Ingrese mensaje para Twitter (enter para terminar)"
read MSG
LARGO=$(echo $MSG | wc -c)
echo "Largo del mensaje $LARGO caracteres"
echo -n "Ingrese clave en Twitter: "
read -s PW
echo; echo "... publicando mensaje ..."
wget --keep-session-cookies --http-user=$USUARIO --http-password=$PW \
    --post-data="status=$MSG" -O - --no-verbose \
    http://twitter.com:80/statuses/update.xml > /dev/null
if [ $? -eq 0 ]; then
        echo "Mensaje publicado."
else
        echo "ERROR al publicar el mensaje."
fi
exit 0

que permite publicar fácilmente micro-artículos.

Noviembre 27, 2008
» Correo POP3+SSL por telnet

Siguiendo con el reciente artículo sobre Correo POP3 por telnet, debo tener en cuenta que mis servidores suelen tener el correo con SSL, para lograr la capa de validación y cifrado para la trasmisión de los datos, por este motivo, el telnet no sirve para hacer conexiones.

Entonces cuando el servidor POP3 tiene SSL (sPOP3) la solución es usar openssl, asi:

$ openssl s_client -connect servidor.correo.com:995
CONNECTED(00000005)
-> Aqui se muestra la validación y
-> el contenido del certificado digital
-> … en varios renglones
->
+OK POP3 Ready

A partir de aquí, funcionan perfectamente todos los comandos de POP3, indicados en el artículo anterior, exactamente como si estuvieramos por telnet normal.

Noviembre 4, 2008
» Correo POP3 por telnet

Esto no es nada nuevo ni “rocket science“, solo es un apunte personal, ya que esto lo requiero de vez en cuando y al final termino buscando entre documentos y documentos hasta que veo lo que quiero.

Es simplemente cómo hacer telnet al servidor de correo (POP3) y ver los mensajes.

Iniciar sesión en el servidor

$ telnet servidor.correo.com 110

Cuando conecte con el servidor, aparece como lo siguiente:

+OK POP3 Ready

El protocolo POP3 es muy sencillo. Cuando hacemos algo bien el servidor nos contesta con “+OK” y cuando lo hacemos mal nos devuelve un “-ERR”. En ambos casos se añadirá un texto descriptivo.

Ahora el servidor espera nuestra validación:

USER usuario@correo.com

El servidor le responderá con el mensaje de OK:

+OK USER

Significa que ha aceptado el nombre de usuario y que esta esperando por su contraseña. Escriba:

PASS contraseña

empleando la contraseña de su buzón de correo. Si todo ha ido bien el servidor nos responde con lo siguiente

+OK Logged in.

Comandos al servidor

Una vez conectados disponemos de varios comandos que podemos utilizar:

STAT (status) solicita el estado de tu buzón de correos. El servidor responderá informando de cuantos mensajes hay a la espera, en el siguiente formato: +OK mm bb, donde mm es el numero de mensajes, y bb el numero de bytes del total.

LIST te lista todos los mensajes. El primer número es el identificador del mensaje (que se requiere para otros comandos y el segundo número es el tamaño.

LIST
+OK 2 messages (320 octets)
1 120
2 200
.

LIST 2
+OK 2 200

LIST 3
-ERR no such message, only 2 messages in maildrop

TOP nn nl para ver las cabeceras y primeras lineas del mensaje (nn sería el numero del mensaje que quieras ver, nl el numero de lineas de la cabecera, p ej: TOP 1 ALL)

RETR # para ver un mensaje, debe especificarse su numero identificados del mensaje.

+OK XXXX octets follow.
Cabecera del mensaje
Cuerpo del mensaje
.

Donde XXXX es el tamaño del mensaje en bytes. Seguido de esta linea se mostrará la cabecera del mensaje y el cuerpo del mismo. Si el mensaje está codificado en HTML o tiene datos adjuntos es más que probable que entienda poco del mismo.

DELE # borra el mensaje elegido. El borrado no es al enviar el comando, sino al terminar la sesión (se debe desconectar con QUIT o los mensajes no serán borrados)

RSET recupera los mensajes marcados para borrado

NOOP (No Operation) instruye al servidor para que no ejecute ninguna acción, salvo responder con un mensaje de confirmación (+OK).

UIDL (Unique Identifier List) sirve para asignar un identificador unico a todos los mensajes o a uno especifico.

APOP (Authenticate Post Office Protocol) Este comando puede ser usado como sustituto del binomio USER - PASS para identificar y validar un usuario. Su utilidad es evitar que el password del usuario viaje por la red de forma no encriptada. La sintaxis es: APOP (nombre) (codigo).

Desconectar y cerrar sesión

Para desconectar correctamente del servidor escriba:

QUIT

El servidor nos responde con:

+OK Logging out.

Y se cierra el telnet: Connection closed by foreign host.

Fuentes: