Archive for febrero, 2013

ORA-24408 Error de conexion a Oracle desde Moodle

jueves, febrero 28th, 2013

En una configuracion dond participan 7 servidores moodle apuntando a la misma base de datos Oracle 11g se produjo el siguiente error

Debug info: ORA-24408: could not generate unique server group name
Error code: dbconnectionfailed
Stack trace:

line 205 of /lib/dml/oci_native_moodle_database.php: dml_connection_exception thrown
line 344 of /lib/dmllib.php: call to oci_native_moodle_database->connect()
line 476 of /lib/setup.php: call to setup_DB()
line 31 of /config.php: call to require_once()
line 31 of /index.php: call to require_once()

Esto se debe a que el nombre del host esta mal configurado o lo resuelve mal. Por lo que si editas el achivo /etc/sysconfig/network

[root@servername mnt]# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=servername

Debe ser igual al configurado en /etc/hosts, aqui yo convenientemente introduzco el servername en primer lugar, para que sea lo primero en reconocer.

127.0.0.1   servername  localhost localhost.localdomain 
::1         servername  localhost localhost.localdomain 

Montar una carpeta compartida de Windows en Linux

jueves, febrero 28th, 2013

Cuando la necesidad de compartir carpetas entre distintos sistemas operativos aparece hay que crear primero el montaje y luego asegurarse que ante un reinicio esto continúe igual.

En nuestro caso, por una necesidad especifica de que una aplicacion en Linux guarde información en un fleserver en windows, secrea la necesidad de montar en linux esta carpeta.

El proceso es más o menos así:

Se crea la carpeta compartida
Se monta
Se agrega al /etc/fstab para que al reinicio se conecte, sin necesidad de montarla manualmente

En comandos linux se traduciría

mkdir -p /mnt/carpetaWindows
mount -t cifs //servidorWindows/carpetaDisponibilizada -o username=usuario_con_permiso,password=clave_del_usuario,file_mode=0664,dir_mode=0777 /mnt/carpetaWindows

Y en el archivo /etc/fstab incluir

//servidorWindows/carpetaDisponibilizada /mnt/carpetaWindows cifs username=usuario_con_permiso,password=clave_del_usuario,file_mode=0664,dir_mode=0777

Ejecutando comando remoto en Linux

miércoles, febrero 27th, 2013

Cuando tienes la necesidad de ejecutar un comando en otro servidor, puedes hacerlo a traves del comando SSH de la siguiente forma.

ssh usuario@nombre_host_o_ip comando

Ahora si quieres ejecutar algo remoto a través de un script, debes hacerlo pero intercambiando las claves públicas de los dos servidores

Encriptando password para Moodle 2.x

miércoles, febrero 27th, 2013

Si es que debes asumir el riesgo de saltarte las API y los Webservices que están para moodle, tambien debes preocuparte del encriptamiento correcto de la password de moodle a la hora de la insercion de un usuario de autenticación manual. Tiene que ver con la generacion en MD5 más una variable presente en el config.php de moodle.

$default=MD5('default'.$CFG->passwordsaltmain);

Insertar/actualizar un CLOB/BLOB en Oracle con PHP

martes, febrero 26th, 2013

Este es el codigo que me dió finalmente resultado para la insercion de un CLOB de Oracle a través de PHP.

$valor='hola';
$conn= oci_connect($USER, $PASSWD, $CONNECTION);
$query= "Insert into tabla (ID, DATA) values (1,empty_clob()) RETURNING DATA INTO :aClob";
$stid= oci_parse($conn, $query);
$clob = oci_new_descriptor($conn, OCI_D_LOB);
oci_bind_by_name($stid, ":aClob", $clob, -1, OCI_B_CLOB); 
$r= oci_execute($stid, OCI_DEFAULT);
$clob->save($valor);
oci_commit($conn); 
$clob->free();
oci_free_statement($stid);

Split en PHP

martes, febrero 26th, 2013

La funcion explode es la forma actual que se tiene para hacer un split en php, este devuelve un arreglo con la cantidad de elementos que resultan de encontrar el caracter separador. En mi caso tuve que encontrar la @ para poder separar el nombre de usuario del servidor. Basado en esto:

$email_separado = explode('@',$email_a_separar);
$nombreUsuario= $email_separado[0]; 
$servidor =  $email_separado[1];