| #!/bin/bash |
| |
| ## |
| # Copyright 2015 Telefónica Investigación y Desarrollo, S.A.U. |
| # This file is part of openmano |
| # All Rights Reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may |
| # not use this file except in compliance with the License. You may obtain |
| # a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations |
| # under the License. |
| # |
| # For those usages not covered by the Apache License, Version 2.0 please |
| # contact with: nfvlabs@tid.es |
| ## |
| |
| |
| LICENSE_HEAD='/** |
| * Copyright 2017 Telefónica Investigación y Desarrollo, S.A.U. |
| * This file is part of openmano |
| * All Rights Reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may |
| * not use this file except in compliance with the License. You may obtain |
| * a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations |
| * under the License. |
| * |
| * For those usages not covered by the Apache License, Version 2.0 please |
| * contact with: nfvlabs@tid.es |
| **/ |
| ' |
| |
| DBUSER="mano" |
| DBPASS="" |
| DBHOST="localhost" |
| DBPORT="3306" |
| DBNAME="mano_db" |
| |
| # Detect paths |
| MYSQL=$(which mysql) |
| AWK=$(which awk) |
| GREP=$(which grep) |
| DIRNAME=`dirname $(readlink -f $0)` |
| |
| function usage(){ |
| echo -e "Usage: $0 OPTIONS" |
| echo -e " Dumps openmano database content" |
| echo -e " OPTIONS" |
| echo -e " -u USER database user. '$DBUSER' by default. Prompts if DB access fails" |
| echo -e " -p PASS database password. 'No password' by default. Prompts if DB access fails" |
| echo -e " -P PORT database port. '$DBPORT' by default" |
| echo -e " -h HOST database host. '$DBHOST' by default" |
| echo -e " -d NAME database name. '$DBNAME' by default. Prompts if DB access fails" |
| echo -e " --help shows this help" |
| } |
| |
| while getopts ":u:p:P:h:-:" o; do |
| case "${o}" in |
| u) |
| DBUSER="$OPTARG" |
| ;; |
| p) |
| DBPASS="$OPTARG" |
| ;; |
| P) |
| DBPORT="$OPTARG" |
| ;; |
| d) |
| DBNAME="$OPTARG" |
| ;; |
| h) |
| DBHOST="$OPTARG" |
| ;; |
| -) |
| [ "${OPTARG}" == "help" ] && usage && exit 0 |
| echo "Invalid option: --$OPTARG" >&2 && usage >&2 |
| exit 1 |
| ;; |
| \?) |
| echo "Invalid option: -$OPTARG" >&2 && usage >&2 |
| exit 1 |
| ;; |
| :) |
| echo "Option -$OPTARG requires an argument." >&2 && usage >&2 |
| exit 1 |
| ;; |
| *) |
| usage >&2 |
| exit -1 |
| ;; |
| esac |
| done |
| shift $((OPTIND-1)) |
| |
| #check and ask for database user password |
| DBUSER_="-u$DBUSER" |
| DBPASS_="" |
| [ -n "$DBPASS" ] && DBPASS_="-p$DBPASS" |
| DBHOST_="-h$DBHOST" |
| DBPORT_="-P$DBPORT" |
| while ! echo ";" | mysql $DBHOST_ $DBPORT_ $DBUSER_ $DBPASS_ $DBNAME >/dev/null 2>&1 |
| do |
| [ -n "$logintry" ] && echo -e "\nInvalid database credentials!!!. Try again (Ctrl+c to abort)" |
| [ -z "$logintry" ] && echo -e "\nProvide database name and credentials" |
| read -e -p "mysql database name($DBNAME): " KK |
| [ -n "$KK" ] && DBNAME="$KK" |
| read -e -p "mysql user($DBUSER): " KK |
| [ -n "$KK" ] && DBUSER="$KK" && DBUSER_="-u$DBUSER" |
| read -e -s -p "mysql password: " DBPASS |
| [ -n "$DBPASS" ] && DBPASS_="-p$DBPASS" |
| [ -z "$DBPASS" ] && DBPASS_="" |
| logintry="yes" |
| echo |
| done |
| |
| |
| #echo structure, including the content of schema_version |
| echo "$LICENSE_HEAD" > ${DIRNAME}/${DBNAME}_structure.sql |
| mysqldump $DBHOST_ $DBPORT_ $DBUSER_ $DBPASS_ --no-data --add-drop-table --add-drop-database --routines --databases $DBNAME >> ${DIRNAME}/${DBNAME}_structure.sql |
| echo -e "\n\n\n\n" >> ${DIRNAME}/${DBNAME}_structure.sql |
| mysqldump $DBHOST_ $DBPORT_ $DBUSER_ $DBPASS_ --no-create-info $DBNAME --tables schema_version 2>/dev/null >> ${DIRNAME}/${DBNAME}_structure.sql |
| echo " ${DIRNAME}/${DBNAME}_structure.sql" |
| |
| #echo only data |
| echo "$LICENSE_HEAD" > ${DIRNAME}/${DBNAME}_data.sql #copy my own header |
| mysqldump $DBHOST_ $DBPORT_ $DBUSER_ $DBPASS_ --no-create-info $DBNAME >> ${DIRNAME}/${DBNAME}_data.sql |
| echo " ${DIRNAME}/${DBNAME}_data.sql" |
| |
| #echo all |
| echo "$LICENSE_HEAD" > ${DIRNAME}/${DBNAME}_all.sql #copy my own header |
| mysqldump $DBHOST_ $DBPORT_ $DBUSER_ $DBPASS_ --add-drop-table --add-drop-database --routines --databases $DBNAME >> ${DIRNAME}/${DBNAME}_all.sql |
| echo " ${DIRNAME}/${DBNAME}_all.sql" |
| |