#!/bin/bash # registeredsoftware str_image #@file registeredsoftware #@brief Lista el software instalado en una imagen de sistema. #@param str_image Nombre canónico de la imagen. #@return Líneas con el formato: programa versión #@version 1.0 - Creación del script. #@author Ramón Gómez - Univ. Sevilla #@date 2014-02-27 # Variables. PROG=$(basename $0) OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg MYCNF=/tmp/.my.cnf.$$ # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then echo "$PROG: Lista el software instalado en una imagen de sistema." echo "Formato: $PROG str_image" exit 0 fi # Control básico de errores. if [ $# -ne 1 ]; then echo "$PROG Error: Formato: $PROG str_image" >&2 exit 1 fi if [ ! -r $SERVERCONF ]; then echo "$PROG: Sin acceso a fichero de configuración" exit 2 fi # Sustituir caracteres ' por \' para evitar inyección SQL. RESOURCE="${1//\'/\'}" # Obtener datos de acceso a la base de datos. source $SERVERCONF # Componer fichero con credenciales de conexión a la base de datos. touch $MYCNF chmod 600 $MYCNF cat << EOT > $MYCNF [client] user=$USUARIO password=$PASSWORD EOT # Borrar el fichero temporal si termina el proceso. trap "rm -f $MYCNF" 0 1 2 3 6 9 15 # Obtener lista de componentes del perfil de software asociado a la imagen. mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \ "SELECT softwares.descripcion FROM perfilessoft LEFT OUTER JOIN perfilessoft_softwares ON perfilessoft.idperfilsoft=perfilessoft_softwares.idperfilsoft LEFT OUTER JOIN softwares ON softwares.idsoftware=perfilessoft_softwares.idsoftware LEFT OUTER JOIN tiposoftwares ON softwares.idtiposoftware=tiposoftwares.idtiposoftware LEFT OUTER JOIN imagenes ON perfilessoft.idperfilsoft=imagenes.idperfilsoft WHERE imagenes.nombreca='$RESOURCE' ORDER BY tiposoftwares.idtiposoftware,softwares.descripcion;"