Enviado em 09/05/2012 - 13:03h
Estou fazendo um sistema de Bkp para vários BD, sendo que gostaria de saber como posso fazer para colocar todas as informações das contas de BD em um script "main.sh" (onde tem todas as variáveis e dados de acessos) para que o script "bkp.sh" (onde tem somente um laço para a geração do bkp) reconheça e faça o backup de cada BD?############## ARQUIVO main.sh ################################################# #!/bin/sh echo "Acessando banco de dados." # Dados para acessar o BD. MyUSER="USUÁRIO" # USERNAME MyPASS="sENHA" # PASSWORD MyHOST="HOST" # Hostname db="banco-de-dados" #DB CHOWN="$(which chown)" CHMOD="$(which chmod)" # Montagem do HD Externo echo "Montando HD Externo..." mount /mnt/backup echo "HD externo montado." # Diretório Destino do backup. DEST="/mnt/backup" # Diretório principal onde o backup será armazenado MBD="$DEST/aulasadistancia1" # Obter nome do host HOST="$(hostname)" # Obter data no formato aaaa-mm-dd NOW="$(date +"%Y-%m-%d")" [ ! -d $MBD ] && mkdir -p $MBD || : # Somente raiz pode acessá-lo! $CHOWN 0.0 -R $DEST $CHMOD 0600 $DEST echo "Lendo banco de dados..." # chama arquivo bkp.sh. source /ASSISTEMAS/tools/test/bkp.sh #Destagem do HD Ext echo "Desmontando HD externo." umount /mnt/backup echo "HD externo Desmontado." sleep 2 echo "---------------------------------------------" echo "Backup e transferencia realizada com sucesso." exit;
############## ARQUIVO bkp.sh ################################################# #!/bin/sh # Linux bin paths, change this if it can't be autodetected via which command MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" GZIP="$(which gzip)" echo "Fazendo backup do banco de dados, aguarde..." FILE="$MBD/$db.$HOST.$NOW.sql.gz" $MYSQLDUMP --opt -u $MyUSER -p$MyPASS -h $MyHOST $db | $GZIP -9 > $FILE
Enviado em 10/05/2012 - 22:03h
./main.sh "UsurioDoSeuBancoDeDados" "SuaSenhaRootdeMySql" "SeuEndereçoDeHost" "SeuBandoDeDados"
############## ARQUIVO main.sh ################################################# #!/bin/sh echo "Acessando banco de dados." # Dados para acessar o BD. MyUSER=${1:-"USUÁRIO"} # USERNAME MyPASS="${2:-"SENHA" # PASSWORD MyHOST=${3:-"HOST"} # Hostname db=${4:-"banco-de-dados"} #DB CHOWN="$(which chown)" CHMOD="$(which chmod)" # Montagem do HD Externo echo "Montando HD Externo..." mount /mnt/backup echo "HD externo montado." # Diretório Destino do backup. DEST="/mnt/backup" # Diretório principal onde o backup será armazenado MBD="$DEST/aulasadistancia1" # Obter nome do host HOST="$(hostname)" # Obter data no formato aaaa-mm-dd NOW="$(date +"%Y-%m-%d")" [ ! -d $MBD ] && mkdir -p $MBD || : # Somente raiz pode acessá-lo! $CHOWN 0.0 -R $DEST $CHMOD 0600 $DEST echo "Lendo banco de dados..." # chama arquivo bkp.sh. source /ASSISTEMAS/tools/test/bkp.sh #Destagem do HD Ext echo "Desmontando HD externo." umount /mnt/backup echo "HD externo Desmontado." sleep 2 echo "---------------------------------------------" echo "Backup e transferencia realizada com sucesso." exit;
############## ARQUIVO bkp.sh ################################################# #!/bin/sh # Linux bin paths, change this if it can't be autodetected via which command MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" GZIP="$(which gzip)" echo "Fazendo backup do banco de dados, aguarde..." FILE="$MBD/$db.$HOST.$NOW.sql.gz" $MYSQLDUMP --opt -u $MyUSER -p$MyPASS -h $MyHOST $db | $GZIP -9 > $FILE
Enviado em 09/05/2012 - 13:16h
Pq vc não faz assim:$ cat /tmp/arquivo.conf VAR1='abc' VAR2=123
$ cat script.sh #!/bin/sh # Carregando definicoes do arquivo de configuracao: source '/tmp/arquivo.conf' echo $VAR1 if [ $VAR2 -eq 123 ]; then echo 'Valores numericos ok!' exit 0 fi
Enviado em 10/05/2012 - 01:42h
Obrigado "/bin/laden" pela a atenção, mas procuro exatamente o seguinte:$MYSQLDUMP --opt -h $MyHOST -u $MyUSER -p$MyPASS $db | $GZIP -9 > $FILE
while getopts "h:u:p:" OPT; do case "$OPT" in "h") MyHOST=$OPTARG;; "u") MyUSER=$OPTARG;; "p") MyPASS=$OPTARG;; "b") db=$OPTARG;; esac done
$MYSQLDUMP --opt host usuário Senha banco-dados | $GZIP -9 > $FILE
Enviado em 10/05/2012 - 06:38h
Olá @marcellocaetano , a dica do @/bin/laden parece ser o que vc deseja.#!/bin/bash # file: conecta.sh USER_DB="${1:-"FALHOU_USUARIO_AQUI"} PASS_DB="${2:-"FALHOU_PASSWORD"} ENDE_DB="${3:-"FALHOU LOCAL"} STR_CON="${4:-"FALHOU STRING DE CONEXÃO"}
#!/bin/bash # file: conecta.sh USER_DB="root" PASS_DB="suasenha" ENDE_DB="localhost" STR_CON="mysql_dump bla bla bla"
Enviado em 10/05/2012 - 10:43h
Muito Obrigado @AprendiNoLinux pela atenção prestada.Enviado em 10/05/2012 - 12:45h
Variáveis públicas. TMP_DIR="/tmp/trb" FILE_NAME_ANTES="antes.txt" FILE_NAME_ATUAL="atual.txt" FILE_NAME_FALTA="faltas.txt" FILE_NAME_CANAIS="canais.txt" PREFIX_FILES="f_canal_" DIR_CANAIS="/home/gatux/scripts/pasta_virtual/filas" DIR_TRB="/home/gatux/scripts/pasta_virtual/movimentos" ARQ_ANTES="${TMP_DIR}/${FILE_NAME_ANTES}" ARQ_ATUAL="${TMP_DIR}/${FILE_NAME_ATUAL}" ARQ_FALTA="${TMP_DIR}/${FILE_NAME_FALTA}" ARQ_CANAIS="${DIR_TRB}/${FILE_NAME_CANAIS}"
Enviado em 10/05/2012 - 12:54h
Enviado em 10/05/2012 - 14:33h
Me desculpe @AprendiNoLinux, mas o que eu pretendo fazer é com argumentos e opções (getopts).Enviado em 10/05/2012 - 19:24h
############# ARQUIVO bkp.sh ################################################# #!/bin/sh # Linux bin paths, change this if it can't be autodetected via which command MYSQL="$(which mysql)" # Esta instrução serve apenas para retornar o diretório e nome de onde está instalado o executável. MYSQLDUMP="$(which mysqldump)" #O mesmo de cima CHOWN="$(which chown)" #Não sei o motivo. CHMOD="$(which chmod)" #Não sei o motivo. GZIP="$(which gzip)" # Retorna algo se gzip instalado. # Até aqui o script só testou se os progs estão instalados para iniciar o backup. Falta então fazer a rotina que se algum deles falhar, enviar mensagem sobre a falha e abortar. echo "Fazendo backup do banco de dados, aguarde..." # Entendi que $DBS deve ser um arquivo ou parâmetro passado ao script. Se for, vou assumir que ele é o 1. DBS=${1:-"FALHOU DBS"} # Desta forma você deve colocar todos os outros parâmetros na linhas abaixo em ordem, se for o caso, ex: IGGY=${2:-"NÃO SEI O QUE FAZ"} MBD=${3:-"VOCE SABE O QUE DEVE SER PASSADO VIA PARÂMETRO"} etc.. etc.. etc... # Quando acabar de incluir todos os parâmetros de entrada precisamos testar possíveis falhas antes de iniciar o for. # Lembrando: Estou confiando que a rotina abaixo esteja funcional. Desconfio que não está. for db in $DBS do skipdb=-1 if [ "$IGGY" != "" ]; then for i in $IGGY do [ "$db" == "$i" ] && skipdb=1 || : done fi if [ "$skipdb" == "-1" ] ; then FILE="$MBD/$db.$HOST.$NOW.sql.gz" $MYSQLDUMP --opt -u $MyUSER -p$MyPASS -h $MyHOST $db | $GZIP -9 > $FILE fi done
Enviado em 10/05/2012 - 21:14h
Fiz umas mudanças nos dois scripts, tirei o excesso, se puder me orientar no atual agradeço muito.Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela