MySQL bash script
Publicado por Pedro Robson Leão 20/04/2009 (última atualização em 13/04/2015)
[ Hits: 12.722 ]
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
Script FIREWALL IPTABLES com 3 (três) interfaces (Int, Ext e DMZ)
Renomeia diretorio,subdiretorio e arquivos de maiuscula > minuscula
Instalando Nagios 4.0.8 - Debian 7
cal2svg gerador de calendários em formato vetorial SVG
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)