viernes, 21 de marzo de 2014

Ejecutar comandos de PostgreSQL en BASH

Les paso este script que hice para ejecutarlo cuantas veces sea necesario , ya que estoy probando una aplicación externa que usa la API de Moodle y pues en las pruebas necesito limpiar la base de datos de moodle cada vez que quiero hacer una prueba nueva.

Descripción:
1 - comprueba si el usuario es postgres
      si NO es  te dice que necesitas serlo
2.- borra la base de datos que tengo (llena de datos)
3.- crea la base de datos nueva
4.- importa el respaldo de mi base de datos limpia de Moodle

Script:
#!/bin/bash
# Ejecutar como usuario postgres

ARCHIVO="backup_21-03-2014.sql"
BASEDEDATOS="moodledb"

USUARIO=$(whoami)
if [ $USUARIO == "postgres" ] ;then
    echo -e "BORRANDO Y CREANDO BASE DE DATOS NUEVA"
    echo -e ""
    psql << EOF
    drop database $BASEDEDATOS;
    create database $BASEDEDATOS;
EOF
    sleep 3
    echo -e "IMPORTANDO RESPALDO $ARCHIVO"
    echo -e ""
    sleep 2
    psql moodledb < $ARCHIVO
else
    echo -e "-----------------------------------------------------------------"
    echo -e "Necesitas ser $USUARIO para ejecutar este script"
    echo -e "-----------------------------------------------------------------"
    echo -e ""
fi

1 comentario:

rodolfomartin dijo...

Excelente script. villatux, consulta: ¿Como podría ingresar desde el script como usuario postgres y ejecute los comandos siguientes escritos?

Si queremos permitir que puedan acceder remotamente al servicio tenemos que realizar una configuración para que el motor atienda las peticiones de todas las interfaces de red del servidor (o solo algunas de ellas). Para ello editamos el archivo postgresql.conf ubicado en el directorio /var/lib/pgsql/9.6/data:
test:~ # vi /var/lib/pgsql/data/postgresql.conf
Y luego buscamos la directiva #listen_addresses, la comentamos o modificamos debiendo quedar similar a lo que sigue:
#listen_addresses = 'localhost'
listen_addresses = '*'
Luego toca autorizar las redes a las que le permitiremos el acceso remoto. Pasamos a editar el archivo pg_hba.conf ubicado en el directorio /var/lib/pgsql/data como se muestra a continuación:
test:~ # vi /var/lib/pgsql/data/pg_hba.conf
Buscamos la siguiente sección, reemplazamos el método de autenticación ident a md5 y le agregamos la directiva necesario para permitir el acceso a los equipos ubicados en nuestra red (en este caso 192.168.1.0/24), y si no usamos IPv6 podemos comentar la última línea.
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.1.0/24 md5
# IPv6 local connections:
#host all all ::1/128 ident