Pular para o conteúdo

Implementando Statement e RecordSet em bash script

Já publiquei um script similar em: http://www.vivaolinux.com.br/script/MySQL-bash-script

Porém refactory é sempre bom para melhorar nossos códigos.

Bem, o exemplo a seguir é mais enxuto e funcional, mesmo tratando-se de um código conceitual explorando todo o poder do bash script.
Pedro Robson Leão pleao
Hits: 5.000 Categoria: Shell Script Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Já publiquei um script similar em: http://www.vivaolinux.com.br/script/MySQL-bash-script

Porém refactory é sempre bom para melhorar nossos códigos.

Bem, o exemplo a seguir é mais enxuto e funcional, mesmo tratando-se de um código conceitual explorando todo o poder do bash script.
Download statemant-script.sh Enviar nova versão

Esconder código-fonte

#!/bin/bash

DB_USER='user';
DB_PWD='password';
DB_HOST='localhost';
DB="mysql"
DB_CLIENT="/usr/bin/mysql -u${DB_USER} -p${DB_PWD} -h${DB_HOST}  $( [ ! -z "${DB}" ] && echo ${DB} || echo "" ) -e ";

function statement() {
  local ifs=${IFS};
  local line=;
  local ct=0;

  local err=$(mktemp);

  RS=();

  IFS="|";

  local query=" ${DB_CLIENT} \"${@}\" 2>${err}";

  while read line ; do

  if [ ${ct} -eq 0 ] ; then
    FIELD=( ${line} );
  else
    _RS=( ${line} );

    local sz=${#FIELD[@]};
    local i=;

    for ((i=0;i<sz;i++)) ; do
      local row=$((ct-1));

      local field="${FIELD[$i]}";
      local value="${_RS[$i]}";

      field="${field//[- ]/_}";
      eval "${field}[$row]='${value}'";   
      RS[${row}]="${line}";
    done
  fi
  ct=$((ct+1));
  done < <( eval ${query} | sed 's/  /   /g' | tr '   ' '|' );

  IFS="${ifs}";

  DBERRMSG=$( cat ${err} && rm -f ${err} );

  test -z "${DBERRMSG}";
}

function main() {
  statement "SELECT Host,User FROM user" && {
    local rs=${#RS[@]};
    local i=;

    for ((i=0;i<rs;i++)) {
      printf "Line: %-20.20s\nHost: %-20.20s\nUser: %-20.20s\n\n" \
         ${i} "${Host[$i]}" "${User[$i]}";
    }
  } || {
    echo ">>> ${DBERRMSG}";
  }
}

main ${@};

Script para adicionar usuarios ftp

Projetinho de firewall

Envio de backps de bancos por ftp com notificação por email

Adicionar máquinas em lote no SAMBA

Criando um Backup .ISO do seu CD.

#1 Comentário enviado por michel5670 em 05/12/2010 - 10:12h
Cara eu mexo com linux a 5 anos e as vezes penso que ja sei alguma coisa mas quando vejo esses codigos vejo que ainda não sei nada rsrsrsrsr.....
Parabéns pelo script muito funcional e profissional.

Contribuir com comentário

Entre na sua conta para comentar.