Mostrando entradas con la etiqueta open source. Mostrar todas las entradas
Mostrando entradas con la etiqueta open source. Mostrar todas las entradas

martes, 4 de noviembre de 2014

Utilizando Espeak como alternativa de sintetización de voz

Durante las entradas relacionadas con el proyecto Jarvis de sintetización de voz, hemos estado utilizando combinaciones entre Festival y mbrola. 

Como se detectaron problemas para que las frases emitidas ofreciesen cierta calidad en la entonación, he continuado mis pruebas con más software de sintetización de voz, buscando obtener una voz femenina adecuada.

Un de ellos es Espeak, bajo estas líneas indico los comandos para su instalación y su uso básico.

Para la instalación, simplemente teclearemos:

sudo apt-get install espeak
o bien, 
sudo aptitude install espeak

Para su uso utilizaremos:

espeak -ves+f1 "¿Qué tal se escucha esta pregunta?"

Donde -v irá acompañada del lenguaje a utilizar en la reproducción (en este caso español - es) y mediante el uso de + añadimos el tipo de voz a utilizar (en este caso f1 corresponde a female 1, voz de mujer con entonación grave). Para poder ver los tipos de voces disponibles en múltiples lenguas, podremos utilizar:

espeak --voices

Y si deseamos ver las variantes de dichas voces, teclearemos:

espeak --voices=variant

Existen ciertas variaciones como temblor en la voz o susurro, croack y whisper. Éstos pueden ser utilizados mediante:

espeak -ves+whisper "Esto es un susurro"

lunes, 17 de febrero de 2014

Monitorización con Zabbix (Iniciación)

En esta ocasión iniciamos nuestro camino hacia el uso de una herramienta profesional de monitorización como Zabbix. A continuación, te ofrecemos una serie de enlaces básicos y muy interesantes que te serán útiles en tus primeros pasos hacia el control de esta herramienta.


El proceso que describo ahora está basado en una instalación hecha sobre un Ubuntu 12.04:

1)Instalamos el servidor Zabbix: 
sudo apt-get install zabbix-server-mysql
Cuando se inicia la instalación se nos solicita ponerle contraseña al usuario root de mysql, es muy recomendable hacerlo. Posteriormente, como Zabbix utiliza una base de datos que creará en Mysql, hay que indicar la clave del usuario administrador de dicha base de datos. Te recomiendo pongas la misma clave que la de tu root de Mysql. A continuación puede que se te solicite que establezcas otra clave, sigue poniendo la misma que la del root de Mysql. Siempre tendrás tiempo de cambiarlas más tarde.

2) Instalamos el front-end de la aplicación:
sudo apt-get install zabbix-frontend-php
Durante la instalación de esta aplicación web para la gestión de Zabbix, se nos solicitará a través de qué sistema de gestión de bases de datos queremos instalarla. En este caso, indicaremos que a través de Mysql. Si nos pide alguna clave, volveremos a establecer la misma que la del root de mysql.


3) Instalamos el agente Zabbix: 
sudo apt-get install zabbix-agent 

Con todo esto instalado, reiniciamos todos los servicios relacionados para que cualquier cambio en las configuraciones tenga efecto.

sudo /etc/init.d/zabbix-server restart
sudo /etc/init.d/zabbix-agent restart

4) Acceso a Zabbix a través de nuestro navegador web:
Una vez instalado, nos vamos al navegador y ponemos como dirección de acceso nuestra IP/zabbix. Se nos solicitará entonces un Login. En mi caso, el usuario por defecto que Zabbix estableció era admin y como contraseña zabbix. Cuando introduces estos datos de autentificación se abre la ventana de gestión de Zabbix y ya puedes empezar a utilizar la herramienta.

Si tienes problemas para que te muestre la ventana de Login con los campos de usuario y contraseña (te muestra un cuadro con una advertencia en rojo sobre problemas de autentificación), te recomiendo que busques el archivo de configuración de zabbix, se llama dbconfig.php y está en la misma carpeta /etc/zabbix. En este archivo, puedes cambiar la línea donde indica el usuario de la base de datos, e incluir allí tu usuario administrador de mysql. Una vez cambiado, reinicias el servicio de mysql (sudo /etc/init.d/mysql restart) y te saldrá en el navegador la ventana de entrada correctamente. Hacemos Login con usuario: admin y contraseña: zabbix y a configurar.

5) Modificar valores en php.ini para que Zabbix funcione correctamente: 
Es posible que al entrar en Zabbix, en la ventana principal, te aparezcan algunos avisos en rojo sobre valores de variables del archivo php.ini que no tienen un valor adecuado. Busca en tu sistema dicho archivo (locate php.ini), edítalo como root y cambia estos valores a los que se te indican en dicha ventana principal. Reinicia el servidor Zabbix y vuelve a hacer login en la aplicación. Comprueba que los avisos han desaparecido.

Los valores de php.ini que tienes que cambiar son los siguientes:
max_execution_time = 300
max_input_time = 600
post_max_size = 32M 
date.timezone = Europe/Madrid

miércoles, 5 de febrero de 2014

Preinstalación automática de Servidor (Shell Script)

El código fuente de este script nos puede ser muy útil para realizar la instalación inicial de los servicios básicos de un Servidor. Entre otros, podremos instalar: Apache, PHP, MySQL, SSH, Servicio de correo electrónico, sistema de alertas por email, Webmin, PHPMyadmin, etc. Todo de una manera muy automática y relativamente cómoda.

Revísalo y cambia lo que necesites, podría tener algún bug. Es código directamente generado en clase de 2ºSMR - 2014 IES Oretania.


#!/bin/bash

#Este script sirve para preparar rápidamente un
#servidor con los servicios básicos más comunes.

#Además, es posible instalar webmin a través de 
#un script previo que se publicó en este mismo blog.
#Otras funciones añadidas permiten instalar phpmyadmin,
#así como habilitar un servidor básico de correo
#electrónico para que el servidor pueda enviar
#alertas por email a su administrador del sistema.

#----------------------------------------------------
#    FUNCIONES
#----------------------------------------------------

function menu()
{

    clear
    echo "*********** MENU SERVICIOS ***********"
    echo "*                     *"
    echo "*  1.- Iniciar asistente instalación *"
    echo "*  2.- Instalar Webmin               *"
    echo "*  3.- Instalar Php MyAdmin          *"
    echo "*  4.- Alertas por email             *"
    echo "*  5.- Salir                         *"
    echo "*                     *"
    echo "**************************************"

}

function asistente()
{

    which tasksel > /dev/null 2>&1
    if [ $? -ne 0 ]
    then   
        echo "Inicializando asistente, un momento por favor..."
        apt-get install -y tasksel #> /dev/null 2>&1
        if [ $? -ne 0 ]
        then
            echo "Error, no puede ejecutarse Tasksel."
            read -p "Pulse una tecla para finalizar."
            exit 1
        fi   
    fi
    tasksel

    #Instalaremos lo que necesitemos a través de esta
    #herramienta.

}

function phpmyadmin()
{

    which phpmyadmin > /dev/null 2>&1
    if [ $? -ne 0 ]
    then   
        echo "Instalando phpmyadmin, un momento por favor..."
        apt-get install -y phpmyadmin #> /dev/null 2>&1
        if [ $? -ne 0 ]
        then
            echo "Error, no puede ejecutarse phpmyadmin."
            read -p "Pulse una tecla para finalizar."
            exit 1
        fi   
    fi
    #Abrimos phpmyadmin para que el usuario empiece a usarlo
    firefox http://localhost/phpmyadmin

}

function webmin()
{
    #Llamamos al script de instalación de webmin
    ./instalawebmin.sh
}

function alertasemail()
{
    which ssmtp > /dev/null 2>&1
    if [ $? -ne 0 ]
    then   
        echo "Instalando ssmtp, un momento por favor..."
        apt-get install -y ssmtp #> /dev/null 2>&1
        if [ $? -ne 0 ]
        then
            echo "Error, no puede ejecutarse ssmtp."
            read -p "Pulse una tecla para finalizar."
            exit 1
        fi   
    fi

   
    read -p "Indica la dirección de destino de las alertas: " email_alertas

    if [ -f /etc/ssmtp/ssmtp.conf ]
    then
        #sacamos copia seguridad
        if [ -f /etc/ssmtp/ssmtp_old.conf ]
        then
            echo "no se sacará copia de ssmtp.conf"
        else
            cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp_old.conf
            read -p "Indica la dirección de email del servidor(sin @gmail.com): " email_servidor
            #Solicitamos contraseña de manera oculta
            echo "Indica la constraseña de la cuenta: "   
            read -s clave
        fi
        #comprobación errores?


        #Volcamos aquí toda la configuración a
        #los dos archivos de configuración de ssmtp
        echo -e "root=$email_servidor@gmail.com \n
mailhub=smtp.gmail.com:587 \n
#rewriteDomain= \n
hostname=$email_servidor \n
AuthUser=$email_servidor@gmail.com \n
AuthPass=$clave \n
FromLineOverride=YES \n
UseSTARTTLS=YES" > /etc/ssmtp/ssmtp.conf
       
    else

        echo "Error al intentar configurar ssmtp: ssmtp.conf."
        exit 1
    fi

    if [ -f /etc/ssmtp/revaliases ]
    then
        #sacamos copia seguridad
        if [ -f /etc/ssmtp/revaliases_old ]
        then
            echo "no se sacará copia de ssmtp.conf"
        else
            cp /etc/ssmtp/revaliases /etc/ssmtp/revaliases_old
        fi
       
        #Modificamos ahora el archivo
        echo "root:$email_servidor@gmail.com:smtp.gmail.com:587" >> /etc/ssmtp/revaliases
        #el nombre de usuario debe de ser uno con privilegios de
        #administrador
        echo "alumno:$email_servidor@gmail.com:smtp.gmail.com:587" >> /etc/ssmtp/revaliases
    else
        echo "Error al intentar configurar ssmtp: revaliases.conf"
        exit 1
    fi
   
    #Enviamos un email de confirmación
    ssmtp $email_alertas < correo.txt

    
    #Donde correo.txt debe tener el formato
    #from: origen del mensaje
    #subject: asunto del mensaje
    #texto del mensaje que se quiere enviar

}




#----------------------------------------------------
#    PROGRAMA PRINCIPAL
#----------------------------------------------------


menu
opcion=""
while [ "$opcion" == "" ]
do
    read -p "Introduce la opción elegida: " opcion
    case $opcion in
        1)asistente;read;;
        2)echo "Instalando Webmin...";webmin;;
        3)echo "Instalando Php MyAdmin";phpmyadmin;;
        4)echo "Alertas por email";alertasemail;;
        5)echo "Finalizando script";exit 0;;
        *)echo "Opción no válida";opcion="";;
    esac
    menu   
    opcion=""
   
done

 El correo electrónico que se ha de generar en el archivo correo.txt que se ha de enviar en la función de "alertasemail" tendría la siguiente forma:

from: servidor que envía la alerta
subject: asunto de la alerta
Este es un correo de confirmación de la correcta instalación y configuración del servicio de alertas por correo electrónico.

miércoles, 29 de enero de 2014

Script para automatizar la instalación de Webmin

A continuación os propongo un Shell Script que automatiza la instalación de Webmin para Linux en su versión 1.670. Webmin permite, entre otras cosas: gestionar múltiples servicios de un servidor, modificar la configuración del sistema y otras muchas utilidades que a un administrador de sistemas le pueden facilitar el trabajo diario con sus servidores Linux.

La mayor ventaja es que Webmin permite todas estas acciones a través de un navegador web, concretamente con la utilización del puerto 10000.

Pues bien, este código fuente intenta comprobar la existencia de Webmin en el servidor, si existe lo actualiza y si no existe procede a su descarga e instalación. Finalmente, se eliminan los archivos temporales utilizados.

Es interesante observar que los mensajes al usuario que el propio script muestra en pantalla, han sido destacados mediante letra en negrita. Esto se consigue utilizando unos patrones para el formateo del texto emitido con la orden echo. Aquí teneis un enlace para tener más información sobre Colores en Shell Scripts.

#!/bin/bash

#Script que automatiza la instalación de webmin en su versión 1.670
#Creación: 29/01/2014

#Variables para poner letra en negrita
abrenegrita="\033[1m"
cierranegrita="\033[0m"


if [ $LOGNAME != "root" ]
then
    echo -e "$abrenegrita Lo siento, este script requiere ejecutarse con privilegios de root. $cierranegrita"
    read
    exit 1
fi

#Comprobamos si Webmin está instalado
if [ -f /etc/init.d/webmin ]
then
    echo -e "$abrenegrita Webmin se encuentra instalado en su sistema. $cierranegrita"
    version=`cat /etc/webmin/version`   
    echo -e "$abrenegrita Versión actual: $version $cierranegrita "
else
    echo -e "$abrenegrita Webmin no se encuentra instalado en su sistema, procediendo a la instalación... $cierranegrita"
fi


#Comprobamos si está instalado aptitude
which aptitude > /dev/null
if [ $? -ne 0 ]
then
    apt-get install aptitude   
fi

#Instalamos los paquetes previos necesarios para Webmin
aptitude install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions
if [ $? -eq 0 ]
then
    echo -e "$abrenegrita Instalación satisfactoria de paquetes adicionales necesarios para webmin.$cierranegrita"
else
    echo -e "$abrenegrita Error en la instalación de paquetes necesarios para webmin.$cierranegrita"
    echo -e "$abrenegrita El script se cerrará.$cierranegrita"
    read
    exit 1
fi

#Descargamos en la carpeta tmp el paquete deb de instalación de webmin
#para ello creamos una carpeta específica

if [ -d /tmp/descarga_webmin ]
then
    echo -e "$abrenegrita Descargando...$cierranegrita"
else
    mkdir /tmp/descarga_webmin
fi

if [ $? -eq 0 ]
then
    cd /tmp/descarga_webmin
    #nos posicionamos en la nueva carpeta temporal y descargamos webmin
    wget http://prdownloads.sourceforge.net/webadmin/webmin_1.670_all.deb   
else
    echo -e "$abrenegrita Error en la descarga del paquete .deb de webmin.$cierranegrita"
    echo -e "$abrenegrita El script se cerrará.$cierranegrita"
    read
    exit 1
fi

if [ -f /tmp/descarga_webmin/webmin_1.670_all.deb ]
then
    echo -e "$abrenegrita El paquete webmin en su versión 1.670 existe, instalando...$cierranegrita"
    dpkg -i webmin_1.670_all.deb
    if [ $? -eq 0 ]
    then
        echo -e "$abrenegrita Instalación satisfactoria, pulsa una tecla para comprobar...$cierranegrita"
        firefox -new-window https://localhost:10000
    else
        echo -e "$abrenegrita Error al instalar webmin.$cierranegrita"
        echo -e "$abrenegrita El script se cerrará.$cierranegrita"
        read
        exit 1
    fi
else
    echo -e "$abrenegrita El paquete .deb no se encuentra en la ubicación predeterminada.$cierranegrita"
    echo -e "$abrenegrita Imposible instalar webmin.$cierranegrita"
    echo -e "$abrenegrita El script se cerrará.$cierranegrita"
    read
    exit 1
fi

#Eliminamos la carpeta temporal y el archivo descargado
respuesta=""

while [ "$respuesta" == "" ]
do
    read -p "¿Desea eliminar los archivos temporales utilizados en la instalación? (S/N)" respuesta
    case $respuesta in
        s|S) rm -r /tmp/descarga_webmin;break;;   
        n|N) echo "Ok, se mantendrán en /temp/descarga_webmin";break;;
        *)echo "No ha introducido una respuesta válida";;
    esac
done

echo -e "$abrenegrita Fin del Script. $cierranegrita"
read -p "Pulse una tecla."
exit 0

martes, 25 de junio de 2013

SIIM 2.0. en IES Oretania

Hace ya algunos años que desarrollé junto con compañeros y alumnos del IES Ntra. Sra de los Remedios un proyecto llamado "Sistema Inalámbrico de Información Multimedia - SIIM". Tras varias evoluciones de este sistema, durante el curso 2012/13 el IES Oretania de Linares ha decidido a incorporar en sus instalaciones el "SIIM 2.0.", una nueva versión de este sistema de información adaptada a las necesidades de este Centro de Enseñanza.

Diversos materiales sobre el proyecto se encontraban dispersos en la red y creo que reunirlos en un post de este blog sería interesante para haceros una idea de qué trata este proyecto y sus evoluciones.




Y accediendo a este enlace podrás más información detallada sobre el proyecto: http://www.juntadeandalucia.es/averroes/impe/web/contenidoRecurso?pag=/2009/04/13/0009/NDOIAND-20090413-0009&idSeccion=19021

Guía en pdf sobre SIIM 2.0.: