lunes, 27 de diciembre de 2010

[kr-16] Compilar asterisk sin internet

En alguna ocasión se me hizo necesario configurar un PBX en un server que no tenía acceso a Internet, cosa que me generó un error durante la compilación de Dahdi, que pude resolver con los pasos que mostaré a continuación.

Comentar en el archivo dahdi-linux-complete-2.2.0.2+2.2.0/linux/Makefile (el directorio puede variar dependiendo la versión empleada) las líneas de la siguiente forma:
# Comentado cuando no hay conexion a internet
#install-firmware:
#ifeq ($(HOTPLUG_FIRMWARE),yes)
# $(MAKE) -C drivers/dahdi/firmware hotplug-install DESTDIR=$(DESTDIR)
HOTPLUG_FIRMWARE=$(HOTPLUG_FIRMWARE)
#endif

#uninstall-firmware:
# $(MAKE) -C drivers/dahdi/firmware hotplug-uninstall DESTDIR=$(DESTDIR)

#firmware-loaders:
# $(MAKE) -C drivers/dahdi/firmware firmware-loaders

En el mismo archivo, editan las líneas que contienen install-firmware y uninstall-firmware de la siguiente forma:
#install: all install-modules install-devices install-include install-firmware install-xpp-firm
install: all install-modules install-devices install-include install-xpp-firm

#uninstall: uninstall-modules uninstall-devices uninstall-include uninstall-firmware
uninstall: uninstall-modules uninstall-devices uninstall-include

domingo, 26 de diciembre de 2010

[kr-15] Ejecutar VM VirtualBox en background

Para poder iniciar una máquina virtual de VirtualBox desde el entorno gráfico es necesario que esté abierto el administrador de máquinas virtuales. Cuando se necesita iniciar la máquina virtual remotamente y solo se tiene acceso por consola, se presenta un útil procedimiento para llevarlo a cabo.

Iniciar la máquina virtual "CGUNO-CentOS-5.2". Este nombre corresponde al asignado durante la creación de la VM.
$ VBoxHeadless --startvm "CGUNO-CentOS-5.2" --vrdp=off&

Verificar los procesos en ejecución
$ ps aux | grep Box
soporte 6222 75.2 3.1 320292 129004 pts/1 Sl 15:47 7:20 /usr/lib/virtualbox/VBoxHeadless --startvm CGUNO-CentOS-5.2 --vrdp=off
soporte 6236 0.0 0.1 82836 4256 pts/1 S 15:47 0:00 /usr/lib/virtualbox/VBoxXPCOMIPCD
soporte 6243 0.0 0.1 159752 6844 ? Sl 15:47 0:00 /usr/lib/virtualbox/VBoxSVC --pipe 8 --auto-shutdown
soporte 6297 0.0 0.0 7240 820 pts/1 R+ 15:57 0:00 grep Box

Verificar si la VM peviamente creada responde al ping
$ ping 192.168.228.252
PING 192.168.228.252 (192.168.228.252) 56(84) bytes of data.
64 bytes from 192.168.228.252: icmp_seq=1 ttl=64 time=2.72 ms
64 bytes from 192.168.228.252: icmp_seq=2 ttl=64 time=0.102 ms
^C
--- 192.168.228.252 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1005ms
rtt min/avg/max/mdev = 0.102/1.415/2.729/1.314 ms

Se agrega la línea de comando al archivo rc.local para realizar la ejecución automática en el inicio
[root@localhost]# vim /etc/rc.local
#!/bin/sh -e

# CGUNO
VBoxHeadless --startvm "CGUNO-CentOS-5.2" --vrdp=off&

[kr14] Uso de apt y wget a través de un proxy

Muchas veces se hace necesario descargar algún paquete o código fuente desde la consola, en un equipo remoto que se encuentre dentro de una topología con proxy, usando los famosos y útiles comandos wget o apt, en el caso de Debian.

Estableciendo el valor de la variable HTTP_PROXY fue útil para poder descargar a través de wget pero no permitió la descarga a través de apt.

# export HTTP_PROXY="http://proxyserver.com:port"

En ciertos escenarios no operó adecuadamente la instrucción anterior, por lo cual se recomienda probar desde la lí­nea de comandos

# wget --execute=http_proxy=proxyserver.com:port http://download.com/archivo.tar.gz

Probar agregando el archivo proxy al directorio apt.conf.d si dio resultados satisfactorios para el gestor de paquetes apt.

# vim /etc/apt/apt.conf.d/proxy
Acquire::http::Proxy "http://proxy.server.here:8080/";

En este enlace encontrarán información detallada del comando wget. En la animación siguiente podrán ver un ejemplo de su uso.


sábado, 25 de diciembre de 2010

[kr13] SSH sin password

A veces es necesario realizar backups entre equipos a través de algún script o aplicación web. Es en estos casos cuando la autenticación por password se vuelve una barrera para la automatización y se hace necesario trabajar con las llaves públicas y privadas. Esta vez trabajaremos sobre una distribución Debian, pero aplicar esto en una diferente no representará problemas.
Equipo servidor:192.168.1.4
Usuario servidor:soporte
Equipo cliente:192.168.1.99
Usuario cliente:krtapas
En el equipo servidor deben configurarse los siguientes parámetros en el archivo sshd_config
[root@servidor]# vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes

Acceder al cliente desde el cual se desea realizar la autenticación sin password y crear las llaves sin clave
[krtapas@cliente]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/krtapas/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/krtapas/.ssh/id_rsa.
Your public key has been saved in /home/krtapas/.ssh/id_rsa.pub.
The key fingerprint is:
19:02:a6:64:2f:4d:c9:1e:73:54:d5:50:e7:73:73:ab krtapas@cliente

Se accede al equipo servidor y se crea el directorio .ssh en la carpeta del usuario con el cual se planea realizar la operación
[soporte@servidor]$ cd /home/soporte/
[soporte@servidor]$ mkdir .ssh

En el equipo servidor se crea el archivo authorized_keys con el contenido del archivo id_rsa.pub existente en el equipo cliente. La llave que se está copiando es la llave pública, la privada es id_rsa y no debe salir del equipo.
[krtapas@cliente]$ scp /home/krtapas/.ssh/id_rsa.pub soporte@192.168.1.4:/home/soporte/.ssh/authorized_keys
soporte@192.168.1.4's password:
id_rsa.pub

Una vez hecho esto, será posible autenticarse sin necesidad de password desde el equipo cliente, en el equipo servidor.
[krtapas@cliente]$ ssh soporte@192.168.1.4
Last login: Fri Jan 15 16:14:03 2010 from 192.168.1.99
[soporte@servidor]$

[kr12] Recuperar password de root en MySQL

En caso que se haya olvidado el password de MySQL o sea necesario averiguarlo por uno u otro motivo, se presentan unos sencillos pasos en este post para establecer uno nuevo. El proceso será realizado con comandos CentOS pero no varía mucho si se quiere realizar en otra distribución.

Detener el servicio MySQL
# service stop mysqld

Iniciar el servicio con unos parámetros especiales para que no solicite password
# mysqld_safe --skip-grant-tables --skip-networking --user=mysql &
[1] 29800
# Starting mysqld daemon with databases from /var/lib/mysql

Verificar que se haya iniciado el proceso con las opciones establecidas
# ps aux | grep mysql
root 29800 0.0 0.0 4484 1112 pts/0 S 18:30 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking --user=mysql
mysql 29852 0.0 0.4 136268 17420 pts/0 Sl 18:30 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock --skip-grant-tables --skip-networking
root 29889 0.0 0.0 3940 732 pts/0 S+ 18:30 0:00 grep mysql

Ingresar al mysql sin password
# mysql -u root mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Se cambia el password para el usuario root y se sale del mysql
mysql> update user set password=password('0p3nMySQLGr0up') where user='root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit

Se comprueba el acceso con el nuevo password
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

[kr11] Reapertura del blog

Después de mucho tiempo de ausencia, se hace la reapertura de este blog, cuyo único propósito es compartir con la comunidad un poco de todo el conocimiento que gracias a la misma he adquirido. Este fin de 2010 y principio de 2011 servirá para organizar y publicar manuales un poco más avanzados y maduros, que le servirán a muchas personas, como me sirven a mi en mi trabajo diario.

Entre los cambios más significativos se destacan:
  • Uso de una nueva plantilla, medianamente ajustada gracias a la útil herramienta de edición que viene de serie en Blogger.
  • Cambio del título del blog, que anteriormente era Linux, Asterisk y VLC, y que ahora será, durante mucho tiempo espero, Simple Howto.
  • Creación de un estilo muy básico para resaltar el código, al estilo de la consola de GNU/Linux.
  • Agregado el gadget para compartir los post en facebook y twiter.

Espero disfruten esta nueva etapa del blog y ojalá sea mucho más duradera que las pasadas.