MySQL bash script
Publicado por Pedro Robson Leão 20/04/2009 (última atualização em 13/04/2015)
[ Hits: 12.909 ]
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
registra quais as máquinas da sala estão ligadas
Impedir duas ou mais conexões por usuário
Gerando HTML de status de HD e coneccao de internet
Angelinux Scripts - Teste de desempenho da sua maquina!
Instalar última versão do Java automaticamente em "todas as plataformas"
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Dica para encontrar diversos jogos Indies criativos
Instalando Discord no Debian 13
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Software livre - será que eu estou tão errado assim? (14)
Boot do PosRog so funciona em notebook (1)