14 de febrero de 2011

Subrutinas en perl


Definir subrutina:

sub nombresubrutina {
Contenido subrutina;
}

Para llamar una subrutina desde el programa:

&nombresubrutina;
$pp = &nombresubrutina(parametro1,parrametro2,etc);


Los parametros en la subrutina, si los tuviera:

Accedemos desde el contenido de la subrutina con el array @_;
cada parámetro seria: $[0]_; $[1]_; etc.

Valores retornados de la subrutina:
Por defecto la subrutina devuelve el último valor procesado.
Se puede determinar dentro del contenido de la subrutina con return


Ref.: http://www.webtaller.com/construccion/lenguajes/perl/lecciones/subrutinas_perl.php

12 de febrero de 2011

Usar bc en bash scripts

Para enviar las operaciones a bc se puede emplear un pipe con echo:

micra:$ echo "scale=5; sqrt(2)" | bc
1.41421

11 de febrero de 2011

Instalar vsftpd en debian lenny


Instalación de vsftd en micra.

# aptitude update
#aptitude install vsftpd

Ok, ahora a configurarlo editando el archivo /etc/vsftpd.conf

En esta linea determinamos si perminmtimos accesos anonoimos o no:
anonymous_enable=NO

Permitimos el acceso autenticado a los usuarios locales:
local_enable=YES

El banner de bienvenida:
ftpd_banner=Welcome to micra server FTP service.

Restringimos a los usuarios a su directorio /home/:
chroot_local_user=YES

Salvamos los cambios del fichero.

Ahora para crear nuevos usuarios enjauldos:
#adduser nuevousuario

Al activar la opción local_enable=YES en /etc/vsftpd.conf todos los usuarios locales tienen acceso con su contraseña. Esto puede ser un problema de seguridad. Se puede prohibir el acceso de usuarios en el archivo: /etc/ftpusers

Ref.:
Muchas mas opciones de configuracion para /etc/vsftpd.conf: http://vsftpd.beasts.org/vsftpd_conf.html



6 de febrero de 2011

Configurar wifi con WPA-PSK en debian

La mudanza a nuestro nuevo piso ha supuesto una migración de cajas comparable a la de los Ñues entre el Serengeti y Masai Mara. Pero para migración complicada la del servicio de ADSL de Movistar, toda una odisea!!!.
Parece ser que la nueva zona de mi casa no era muy interesante para Movistar de modo que la cantidad de conexiones disponibles eran limitadas, ...??? parece de chiste pero era así. Finalmente después de un mes y medio e innumerables llamadas al 1004, por fin ayer recupere mi conexión a internet. El nuevo router viene con clave WPA de modo que ya es hora de modernizarme y pasar de la clave WEP, con su nivel se seguridad de risa, a la mucho mas sólida clave WPA-PSK, que no es incrackeable pero la dificultad de hacerlo no tiene ni comparación con le extrema sencillez de romper la clave WEP.

Así que tengo que reconfigurar la conexión wifi de mi servidor micra al nuevo router con la clave WPA-PSK, vamos a ello:

1) Instalar wpa_supplicant:

quien se encarga de la negociación de la autentificación del equipo linux - debian al ruter mediante clave WPA-PKS es el demonio wpa_supplicant.

De modo que lo primero es instalar este paquete y sus dependientes:
# aptitude install wpasupplicant
2) modificar o crear el archivo /etc/wpa_supplicant/wpa_supplicant.conf
Aqui hay varias configuraciones según el tipo de tarjeta de red y las opciones que queramos poner.
A mi me ha funcionado esta para micra:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid=”essid”
scan_ssid=1
proto=WPA
key_mgmt=WPA-PSK
psk="contraseña_wpa"
}
Hay que revisar los permisos de este archivo y cuidado ya que aparece la lave wpa-psk sin cifrar.
Si el nivel de seguridad lo requiere se puede hacer que la clave wpa-psk aparezca cifrada.

3) Modificar el archivo /etc/network/interfaces
Ademas de la configuración habitual para los interfaces de red hay que añadir simplemente el tipo de red y la localización del fichero de configuración wpa:
...
auto wlan0
iface wlan0 inet static
address 192.168.1.50
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
wpa-driver wext
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
...
4) Reiniciar la red:
# /etc/init.d/networking restart
Ref.:

13 de noviembre de 2010

menu-lst de grub2 (part. 2)


Los ficheros de configuración de grub2 ya no son editables a mano, hay que generarlos con los scripts y/o con #grub-update.


Para ver los S.O. del menu de inicio de grub2:

# grep menuentry /boot/grub/grub.cfg

pp@xubuntu:/boot/grub$ less grub.cfg |grep menuentry

menuentry 'Ubuntu, with Linux 2.6.35-22-generic' --class ubuntu --class gnu-linux --class gnu --class os {
menuentry 'Ubuntu, with Linux 2.6.35-22-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
menuentry "Memory test (memtest86+)" {
menuentry "Memory test (memtest86+, serial console 115200)" {
menuentry "Windows Vista (loader) (on /dev/sda1)" {
menuentry "Windows Recovery Environment (loader) (on /dev/sda2)"{
Ahora se puede seleccionar el S.O. que arrancará por defecto en grub2, recordando que empiezan a numerarse por el 0.

23 de octubre de 2010

tar


tar
[opciones] [archivo de salida] [archivo] ... [archivo] ó [directorio]




actividad opción ejemplo
descomprimir/extraer -x tar -xf paquete.tar
visualizar lo que se realiza -v tar -xvf paquete.tar
archivar/crear el directorio kernel (y subdirect.) -c tar -cvf paquete.tar kernel/
comprimiendo con bzip2 -j tar -cjvf paquete.tar.bz2 kernel/
comprimiendo con lzma -J tar -cJvf paquete.tar.lzma kernel/
comprimiendo con gzip -z tar -czvf paquete.tar.gz kernel/
comprimiendo con lzip --lzip tar -cvf paquete.tar.lz --lzip kernel/
comprimiendo con compress -Z tar -cZvf paquete.tar.Z kernel/

Descomprimir fichero.tar.gz: tar -zxvf fichero.tar.gz
Comprimir fichero.tar.gz: tar -zcvf fichero.tar.gz [fichero ó directorio]

Todo ello lo hace manteniedo lal estructurs de subdirectorios y atributos de los ficheros.

Ref.:
tar
GUÍA RÁPIDA PARA COMPRIMIR/DESCOMPRIMIR ARCHIVOS
Listar un archivo tar:
$ tar -tvf archivo.tar
Listar un archivo tar.gz:
$ tar -ztvf archivo.tar.gz
Listar un archivo tar.bz2:
$ tar -jtvf archivo.tar.bz2

Tamaño de directorio en Linux con du

 micra:# du -sh (directorio) 

Por ejemplo: para ver el tamaño de los subdirectorios de / micra:/

# du -sh * 

 Esto me es muy util para verificar el tamaño de los directorios y ver si alguno se dispara en tamaño "sin causa aparente". 

 

Ref.: du

21 de octubre de 2010

menu.lst de grub2


Manejar grub siempre ha sido un desafío. Y ahora que ya lo tenía más o menos dominado,... tenemos grub2 que no tiene nada que ver con su antecesor.

Por ejemplo el tan usado menu.lst de grub ya no existe en grub2

Para cambiar en grub2 los parámetros que estaban en menu.lst hay que:

- editar el fichero /etc/defaults/grub
- ejecutar #update-grub para que se actualize grub2

Ref.:
http://www.esdebian.org/wiki/instalar-grub2-debian

18 de octubre de 2010

exoRecompilando el kernel 2.6.35.7 / 2.6.36 en Ubuntu 10.10


Ubuntu10.10 tiene el kernel 2.6.35.7; y esto me hacer pensar que ya hace tiempo que no lo actualizo en mi sobreexplotado servidor micra que todavia está con debian lenny kernel 2.6.32.3 .

Para soluccionarlo pillo mis propios howtos:

Exo-RedPill-Compilación del Kernel 2.6.32.3 para Micra
Exo-Recompilación del Kernel
Recompilar el Kernel al estilo Debian: La Píldora Roja

... y me pongo a ello utilizando el actual fichero de configuración del kernel 2.6.32.3 de micra exoRecompilando en un pentium2800 de doble nucleo con debian-lenny como sistema operativo.


El resultado no es bueno, ya que no termina la recompilación apareciendo errores:
... ... ...
make[1]: se sale del directorio `/usr/src/linux-2.6.35.7'
/usr/bin/make EXTRAVERSION=.7-micra-pp01 ARCH=i386 \
-C Documentation/lguest
make[1]: se ingresa al directorio `/usr/src/linux-2.6.35.7/Documentation/lguest'
cc -m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE lguest.c -o lguest
lguest.c:21:25: error: sys/eventfd.h: No existe el fichero o el directorio
lguest.c: In function 'create_thread':
lguest.c:1026: warning: implicit declaration of function 'eventf
d'
make[1]: *** [lguest] Error 1
make[1]: se sale del directorio `/usr/src/linux-2.6.35.7/Documentation/lguest'
make: *** [debian/stamp/build/kernel] Error 2
micra:~#
Revisando la web veo que es un error ya reportado en el kernel 2.6.35.7:
What's up with Kernel 2.6.35.7? Annoying bugs while compiling...

Y para mi mayor sorpresa, ...ya descrito por yo mismo, con solucción y todo!!!! en:
Exo-RedPill-Compilación del Kernel 2.6.32.3 para Micra

Aplico mi propia solucción editando el fichero:
"lenny:# nano /usr/src/linux-2.6.35.7/Documentation/lguest/Makefile
-Cambiamos- "all: lguest" por "all:"
... y exorecompilando ...
... tarda un poquillo.

... parece que no ha funcionado !!??
Aparaece el mismo error que hace referencia a que kernel package 11.015 no esta actualizado. En lenny es el que se instala pero en squeeze es la versión kernel package 12.036. En los kernel superiores a 2.6.33 el kernel package 11.015 no funciona.

Veo otra solucción que es innactivar las opciones LGUEST de la configuración del kernel:
http://permalink.gmane.org/gmane.linux.debian.user/386867

Cambio el fichero de configuración del kernel:
de:
...
CONFIG_PARAVIRT_GUEST=y
CONFIG_VMI=y
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
CONFIG_LGUEST_GUEST=y
...

a:
...
CONFIG_PARAVIRT_GUEST is not set
CONFIG_VMI=y
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST is not set
CONFIG_LGUEST_GUEST is not set
...

... a exorecompilar ... y
tampoco funciona, sale el mismo error con kernel package 11.015

Más opciones:
( ) recompilar el kernel 2.6.25.7 desde debian squeeze
( ) ó desde Ubuntu 10.10

Vamos con la opción: exoRecompilación con Ubuntu 10.10

1) Instalo Ubuntu10.10 en una partición de 5GB del portatil vaio.
2) Actualizo el sistema, instalo paquetes necesarios.
3) Descargo el kernel... pero si ya ha cambiado!!!! el último estable es el kernel 2.6.36 !!!!!!; bueno pues vamos con este.
4) lo descomprimo
5) Pillo el fichero de configuración del kernel 2.6.32.3 de micra.
6) ... a exorecompilar ...
... y FUNCIONA !!!!!


Ya tenemos el paquete .deb con el kernel, solo falta instalarlo en micra a ver que hace.

micra con este nuevo kernel 2.6.36 NO termina el boot ya que hay problemas con algunos modulos ...lo tengo que revisar ( ).

Con Ubuntu10.10 se puede exorecompilar los últimos kernels y aplicarlos a sistemas debian lenny.

14 de septiembre de 2010

Manejo de claves duplicadas MySQL


Problema: intentar insertar un registro duplicado en un campo que es clave principal, da error.

Solución:
INSERT ... ON DUPLICATE KEY UPDATE ...
(Use UPDATE instead INSERT with duplicated keys)

INSERT IGNORE ...
(The row is not inserted but no duplicate error is issued)

Ref.:
http://mjcarrascosa.com/insertar-o-actualizar-registros-en-mysql/
INSER ON DUPLICATE KEY
INSERT IGNORE