Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2016
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.63 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # -- CONFIGURACIÓN DE VARIABLES GLOBALES
  4. APP_HOME="."
  5. APP_OUTPUT="import.log"
  6.  
  7. MYSQL_DBUSER_ADM="root"
  8. MYSQL_DBUSER="admin"
  9. MYSQL_DBPASS="admin"
  10. MYSQL_DBNAME="mi_db"
  11.  
  12. PG_DBUSER_ADM="postgres"
  13. PG_DBUSER="admin"
  14. PG_DBPASS="admin"
  15. PG_DBNAME="mi_db"
  16.  
  17. # -- SE LIMPIA LA CONSOLA Y SE DESPLIEGA EL TITULO DEL PROGRAMA.
  18. clear
  19. echo "IMPORT"
  20. echo "======"
  21.  
  22. # -- SE VERIFICA QUE LOS DOS PARAMETROS QUE INDICAN EL TIPO DE BASE
  23. # DE DATOS A UTILIZAR (MYSQL O POSTGRESQL) Y EL ARCHIVO DUMP DE DONDE
  24. # IMPORTAR LA BASE DE DATOS HAYAN SIDO PASADOS POR EL USUARIO.
  25. if [ -z $1 ] || [ -z $2 ]; then
  26. echo "Error en la ejecución! Faltan parámetros.."
  27. echo "Ejemplo ejecución:"
  28. echo
  29. echo "  $ sh import.sh [mysql|pg] dump.sql"
  30. echo
  31. exit
  32. fi
  33.  
  34. # -- SE COMPRUEBA QUE EL PRIMER PARÁMETRO RECIBIDO CORRESPONDA
  35. # A LAS OPCIONES VÁLIDAS QUE SON mysql Y pg.
  36. if [ $1 != "mysql" ] && [ $1 != "pg" ]; then
  37. echo "Error en la ejecución! las opciones para el primer parámetro pueden ser solamente 'mysql' y 'pg' (postgres)."
  38. echo "Ejemplo ejecución:"
  39. echo
  40. echo "  $ sh import.sh [mysql|pg] dump.sql"
  41. echo
  42. exit
  43. fi
  44.  
  45. # -- SE VERIFICA LA EXISTENCIA DEL ARCHIVO DUMP.
  46. if ! [ -f $APP_HOME/$2 ]; then
  47. echo "Error en la ejecución! El archivo dump '$2' no existe."
  48. echo
  49. exit
  50. fi
  51.  
  52. # -- SE LE SOLICITA AL OPERADOR QUE INGRESE LA CONTRASEÑA DEL USUARIO
  53. # ADMINISTRADOR DE LA BASE DE DATOS.
  54. STTY_SAVE=$(stty -g)
  55. stty -echo
  56. if [ $1 == "mysql" ]; then
  57. echo "Favor de introducir a continuación la contraseña del usuario '$MYSQL_DBUSER_ADM', administrador del motor de base de datos 'MySQL'."
  58. elif [ $1 == "pg" ]; then
  59. echo "Favor de introducir a continuación la contraseña del usuario '$PG_DBUSER_ADM', administrador del motor de base de datos 'PostgreSQL'."
  60. else
  61. echo "Favor de introducir a continuación la contraseña del usuario administrador del motor de base de datos."
  62. fi
  63. echo
  64. echo -n "Introduzca Password: "
  65. read DBADMIN_SECRET_PASSWD
  66. stty $STTY_SAVE
  67. echo
  68. echo
  69.  
  70. # -- SEGÚN LA BASE DE DATOS ESPECIFICADA SE PROCEDE A IMPORTAR EL DUMP.
  71. echo "" > $APP_HOME/$APP_OUTPUT
  72. if [ $1 == "mysql" ]; then
  73. echo -n "Desea eliminar la base de datos $MYSQL_DBNAME y el usuario $MYSQL_DBUSER antes de importar la copia de seguridad? OPCIONES (S|N): "
  74. read ELIMINA_DB_USER
  75. if [ $ELIMINA_DB_USER == "S" ] || [ $ELIMINA_DB_USER == "s" ]; then
  76. echo "Eliminando la base de datos y el usuario del sistema del motor MySQL. Aguarde un momento..."
  77. mysql -v -u $MYSQL_DBUSER_ADM -p$DBADMIN_SECRET_PASSWD -e "drop database $MYSQL_DBNAME;" >> $APP_HOME/$APP_OUTPUT
  78. mysql -v -u $MYSQL_DBUSER_ADM -p$DBADMIN_SECRET_PASSWD -e "drop user $MYSQL_DBUSER@localhost;" >> $APP_HOME/$APP_OUTPUT
  79. echo
  80. fi
  81. echo "Importando Base de Datos del sistema en MySQL. Aguarde un momento..."
  82. mysql -v -u $MYSQL_DBUSER_ADM -p$DBADMIN_SECRET_PASSWD < $APP_HOME/$2 >> $APP_HOME/$APP_OUTPUT
  83. mysql -v -u $MYSQL_DBUSER_ADM -p$DBADMIN_SECRET_PASSWD -e "grant all on $MYSQL_DBNAME.* to $MYSQL_DBUSER@localhost identified by '$MYSQL_DBPASS'" >> $APP_HOME/$APP_OUTPUT
  84. echo "Fin del proceso de importación! Puede ver la salida del proceso en el archivo '$APP_HOME/$APP_OUTPUT'."
  85. echo
  86. elif [ $1 == "pg" ]; then
  87. export PGUSER=$PG_DBUSER_ADM
  88. export PGPASSWORD=$DBADMIN_SECRET_PASSWD
  89. echo -n "Desea eliminar la base de datos $PG_DBNAME y el usuario $PG_DBUSER antes de importar la copia de seguridad? OPCIONES (S|N): "
  90. read ELIMINA_DB_USER
  91. if [ $ELIMINA_DB_USER == "S" ] || [ $ELIMINA_DB_USER == "s" ]; then
  92. echo "Eliminando la base de datos y el usuario del sistema del motor PostgreSQL. Aguarde un momento..."
  93. psql -L $APP_HOME/$APP_OUTPUT -c "drop database $PG_DBNAME;" >> $APP_HOME/$APP_OUTPUT
  94. psql -L $APP_HOME/$APP_OUTPUT -c "drop user $PG_DBUSER;" >> $APP_HOME/$APP_OUTPUT
  95. echo
  96. fi
  97. echo "Importando Base de Datos del sistema en PostgreSQL. Aguarde un momento..."
  98. psql -L $APP_HOME/$APP_OUTPUT -c "create user $PG_DBUSER createdb createuser createrole;" >> $APP_HOME/$APP_OUTPUT
  99. psql -L $APP_HOME/$APP_OUTPUT -c "alter user $PG_DBUSER with password '$PG_DBPASS';" >> $APP_HOME/$APP_OUTPUT
  100. psql -L $APP_HOME/$APP_OUTPUT -c "create database $PG_DBNAME;" >> $APP_HOME/$APP_OUTPUT
  101. psql -L $APP_HOME/$APP_OUTPUT -c "alter database $PG_DBNAME owner to $PG_DBUSER;" >> $APP_HOME/$APP_OUTPUT
  102. psql -L $APP_HOME/$APP_OUTPUT -d $PG_DBNAME -f $APP_HOME/$2 >> $APP_HOME/$APP_OUTPUT
  103. unset PGUSER
  104. unset PGPASSWORD
  105. echo "Fin del proceso de importación! Puede ver la salida del proceso en el archivo '$APP_HOME/$APP_OUTPUT'."
  106. echo
  107. else
  108. echo "Opción no soportada!"
  109. echo
  110. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement