15 de febrero de 2011

zip file with perl

Utilizaremos el modulo Archive::Zip

Comprimir fichero a .zip

#!/usr/bin/perl
use Archive::Zip;
$obj = Archive::Zip->new();
$obj->addFile($file);
$obj->writeToFileNamed('dummy.zip');

para controlar que no ha habido errores:
if ($obj->writeToFileNamed('dummy.zip') = "AZ_OK" ) { print "Archivo comprimido ok\n";}
else { print "Archivo NO comprimido correctamente!!"; }

Descomprimir un fichero .zip

#!/bin/perl
use Archive::Zip; # imports

$obj = Archive::Zip->new(); # new instance
$status = $obj->read('dummy.zip'); # read file contents
if ($status != AZ_OK) { die('Error in file!'); }
else { $obj->extractTree(undef, "/tmp/"); # extract files }

Ref.:



El directorio de trabajo en perl

El directorio de trabajo donde se esta ejecutando la rutina perl:

#!/usr/bin/perl
use Cwd;
$dir = getcwd();
print "$dir\n";
die;

Listar ficheros de un directorio con perl

El uso de comandos linux shell en rutinas perl es habitual usando exec(), system() o `comando linux`.
El problema es entonces que las rutinas solo funcionaran en entornos linux no en widows con perl instalado.
Para solucionas esto y mejorar la portabilidad de las ritnas perl hay que hacerlo todo en "pure perl".

Un clon de "ls" en perl:
#!/usr/bin/perl
$dir = "/directorio";
opendir(DIR, "$dir");
@FILES = readdir(DIR);
foreach $file (@FILES) {
print $file, "\n";
}
closedir(DIR);


14 de febrero de 2011

Perl Command List


Lista de comandos y estruscturas en perl:

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.: