MySQL bash script
Publicado por Pedro Robson Leão 20/04/2009 (última atualização em 13/04/2015)
[ Hits: 12.698 ]
Download mysql.tar.bz2 (versão 2)
O script a seguir é um exemplo de estudo mostrando a possibilidade do que pode e não ser feito com shell script.
Criei uma biblioteca bash script para ser usada como interface MySQL de forma fácil e intuitiva. Espero que seja útil e estou a disposição para duvidas.
Pedro Robson Leão
Versão 2 - Enviado por Pedro Robson Leão em 09/04/2015
Changelog: Atualização da versão.
Não sei o que ocorreu mais a versão anterior estava errada.
Warning: Using a password on the command line interface can be insecure.
A mensagem acima foi incluída nas versões mais novas do MySQL e quebra o script.
:::::::::::::: include/mysql.sh :::::::::::::: #!/bin/bash # MySQL shell library # Pedro Robson Leao - 2009/04/19 # pedro.leao@gmail.com _DB_ERROR=""; _DB_ERROR_CODE=0; _DB_RS_NEXT=1; _DB_RS_COUNT=0; function mysql_connect() { local user=${1:-"root"}; local passwd=${2}; local db=${3:-"mysql"}; local host=${4:-"localhost"}; _DB_USER="${user}"; _DB_PWD="${passwd}"; _DB_HOST="${host}"; _DB="${db}"; } function mysql_error() { #ERROR 1046 (3D000) at line 1: No database selected local error=$( echo ${1} | tr '£' ' ' ); if echo "${error}" | egrep -q "^ERROR [0-9]+ \([A-Za-z0-9]+\)" ; then _DB_ERROR_CODE=$( echo ${error} | cut -d " " -f 2 ); _DB_ERROR=$( echo ${error} | cut -d : -f 2- ); else false; fi } function mysql_haserror() { [ ${_DB_ERROR_CODE} -ne 0 ] && true || false; } function mysql_geterror() { echo "${_DB_ERROR}"; } function mysql_geterrno() { echo "${_DB_ERROR_CODE}"; } function mysql_execute() { local line; local ct=0; while read line ; do if [ ${ct} -eq 0 ] ; then if mysql_error "${line}" ; then #IFS=$OLDFS; return; else _DB_COLUNS_NAME=( ${line} ); fi else _DB_RS[${ct}]="${line}"; fi ct=$((ct+1)); done < <( mysql -u"${_DB_USER}" -p"${_DB_PWD}" -h"${_DB_HOST}" "${_DB}" -e "${1}" 2>&1 | tr ' ' '£' ); #done < <( mysql -u"${_DB_USER}" -p"${_DB_PWD}" -h"${_DB_HOST}" "${_DB}" -e "${1}" 2>&1 | sed s/'\t'/\"'\t'\"/g | sed s/$/\"/g | sed s/^/\"/g ); _DB_RS[${ct}]=; _DB_RS_COUNT=${ct}; } function mysql_count() { echo "${_DB_RS_COUNT}"; } function mysql_getfirst() { _DB_RS_NEXT=1; echo $( mysql_getnext ); } function mysql_getnext() { _DB_RS_NEXT=$((_DB_RS_NEXT+1)); } function mysql_hasnext() { [ ${_DB_RS_COUNT} -le $((_DB_RS_NEXT+1)) ] && return 1 || return 0; } function mysql_line() { echo ${_DB_RS_NEXT}; } function mysql_getfield() { local size=${#_DB_COLUNS_NAME[@]}; local VCT=( ${_DB_RS[${_DB_RS_NEXT}]} ); if echo ${1} | egrep -q "^[0-9]+$" ; then # pesquisa por numero do campo [ ${1} -le ${size} ] && { echo ${VCT[${1}]} | tr '£' ' '; } else # pesquisa por nome do campo local i; for ((i=0;i<size;i++)) ; do if [ "${1}" == "${_DB_COLUNS_NAME[$i]}" ] ; then break; fi done echo ${VCT[$i]} | tr '£' ' '; fi } :::::::::::::: mysql_sample.sh :::::::::::::: #!/bin/bash source include/mysql.sh #sample mysql_connect root Germany information_schema; mysql_execute "SELECT * FROM TABLES"; mysql_haserror && { echo "$( mysql_geterrno ): $( mysql_geterror )"; exit; } mysql_getfirst; echo "$(mysql_line) : $( mysql_getfield 0 )|$( mysql_getfield 1 )|$( mysql_getfield 2)|$( mysql_getfield 3)|$( mysql_getfield 4)|$( mysql_getfield 5)"; while mysql_hasnext ; do mysql_getnext; echo "$(mysql_line) : $( mysql_getfield TABLE_SCHEMA )|$( mysql_getfield ENGINE )|$( mysql_getfield TABLE_NAME )"; done
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - EXCLUINDO USUÁRIO COM USO=0
Analisador de rede com aviso em net send
Script para checagem de Ponto de Acesso.
BACKUP para micros com Windows XP utilizando o share administrativo ( C$ )
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
estou com chromebook legalzinho. (2)
Estou com sede em aprender sobre o nosso querido Linux. (1)
big linux sem audio como resolver (2)
Como faz para dar um update-grub por shell script [RESOLVIDO] (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta