migrando address book sqlite3 de roundcubemail a csv para importar en zimbra

Zimbra acepta .cvs, por lo que haré un script de perl para tal cometido parseando las salidas de sqlite de cada usuario configurados en sqlite que usa una db llamada roundcube también. Hay que tener en cuenta que este módulo funciona para SQLite3.

# apt-get install sqlite3
# apt-get install libclass-dbi-sqlite-perl


Como hay que convertir la DB de sqlite2 a sqlite3 se instala tambien el paquete

# apt-get install sqlite

Luego se ejecuta de la siguiente manera

# sqlite DBv2 .dump | sqlite3 DBv3
# file DBv2 DBv3
DBv3: SQLite 3.x database
DBv2: SQLite 2.x database


Esto tambien puede evitarse si en la versión de sqlite2 se lanzan comandos desde bash o shell, ya que los acepta, vr.g.

# sqlite DBv2 "SELECT * FROM tabla WHERE campo_id=2 " >> archivo.txt
...
Despliega datos
...


A continuación dejo el script de perl que sirve para la migración o bien descargarlo aquí

********************
#!/usr/bin/perl -w

# Este script extrae el address book de cada usuario de roundcubemail # usando
# sqlite3 como base de datos.
# Autor: Jaime Cabrera Letona
# Email: jaimeco at usac.edu.gt
# Versión: 1.0

# Se saca una copia de /etc/shadow para trabajar en ella sobre un #directorio aparte.

open (SHADOW,"
while ($linea = )
{
chomp($linea);
@usuario=split(/\:/,$linea);

$user_sq= `sqlite3 rjaimeco3 "SELECT user_id FROM users WHERE username='$usuario[0]'"`;
chomp($user_sq);

$contact_user_sq=`sqlite3 rjaimeco3 "SELECT * FROM contacts WHERE user_id='$user_sq'"`;
open (DIRE,">>$usuario[0]_direcciones_sq.txt");
print DIRE "$contact_user_sq";
#print $contact_user_sq;
close DIRE;
# creando el archivo para zimbra


open (DIREC,"<$usuario[0]_direcciones_sq.txt");
while ($linea_contact = )
{
chomp($linea_contact);
@nom_mail=split(/\|/,$linea_contact);

# A insertar en zimbra
$zimbranombres="'$nom_mail[5]','$nom_mail[4]','local://$nom_mail[5]','' \n";
print $zimbranombres;
open(ADDR,">>$usuario[0].csv");
print ADDR "$zimbranombres";
print $zimbranombres;
}



close (DIREC);
$borrar="rm *.txt";
system($borrar);

}

exit 0;
********************

Con esto obtenemos un conjuunto de archivos CSV en del tipo user_shadow.csv el cual o bien le damos una copia a cada usuario o bien se los enviamos al correo vía otro script de perl.

Comentarios

Entradas populares