shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Integração com mySQL


From: Bruno Gunter Fricke
Subject: Re: [shell-script] Integração com mySQL
Date: Thu, 14 Jun 2007 15:58:44 -0300

Pode-se também anexar o script e poderemos lê-lo em nosso editores
preferidos sem os "quotes" que os programas de e-mail usam.
Uma dica: Evite usar o comando dialog, algumas distros não vem com ele
habilitado por padrão.

Vou testá-lo e depois posto comentários.

[]'s
Bruno Gunter

Em Qui, 2007-06-14 às 15:40 -0300, Tiago Barcellos Peczenyj escreveu:
> Nogueira,
> 
> Quando tiver scripts muito grandes, procure colocar também em algum
> site/blog/wiki.
> 
> O pastebin ( http://pastebin.com/ ) possui syntax highlyght e permite
> que vc
> divulgue de forma mais fácil o seu script. Por exemplo, aqui no Gmail
> eu
> estou vendo as linhas maiores distorcidas.
> 
> []´s Tiago
> 
> On 6/14/07, nogueira_jr <address@hidden> wrote:
> >
> > Amigos:
> >
> > Usando a experiência do Julio C. Neves e do canivete suiço do
> Aurélio.Net,
> >
> > escrevi as seguintes rotinas (sujeitas a 100% de alteração por quem
> achar
> > necessário - mas postem aqui, porque quero aprender mais):
> >
> > Arquivo (1): cria_sys.sh (cria um database TESTE usando o arquivo
> (2)
> > cria_sys.sql) Depois chama a rotina (3) cria_sys1.sh que vai criar a
> > tabela
> > PRODUTOS e colocar alguns itens lá dentro.
> >
> > Arquivo (4): destroi_sys.sh (que apaga as tabelas e o database
> criados no
> > arquivo acima)
> >
> > Basico: Ter o mySQL instalado e com o ROOT definido.
> >
> > Arquivo (1)-----------------------:
> > #!/bin/bash
> > clear
> > modo=t
> > read -p "Modo [g]ráfico ou modo [t]exto ? : " modo
> > [ "$modo" ] || modo=t
> > if [ $modo -ne "t" ]; then
> > modo=g
> > fi
> >
> > echo
> ==================================================================
> > echo Sistema de implantação de banco de dados mySQL
> > echo ----------------------------------------------------------
> > echo
> ================================================================== >
> > mc2_db.log
> > echo Sistema de implantação de banco de dados mySQL >> mc2_db.log
> > echo ---------------------------------------------------------- >>
> > mc2_db.log
> >
> > # ======================= variaveis pré-fixadas:
> > nome_root=root
> > nome_db=teste # DEVE ser alterado cfme sistema !!!
> > senha_root=
> > deu_erro=1 #0=nao 1=sim
> > # ...aqui outras
> > # ==============================================
> >
> > while true; do
> > echo Somente o ROOT pode usar esta rotina.
> > echo
> > if [ $modo = "g" ]; then
> > nome_root=$( dialog --stdout --inputbox 'Digite seu nome:' 0 0
> $nome_root
> > )
> > [ "$nome_root" ] || nome_root=root # verifica se não deu o nome
> > senha_root=$( dialog --stdout --title 'Senha de acesso' --insecure
> > \
> > --passwordbox 'Por favor, confirme a senha do root:' 0 0 )
> > else
> > read -p "Informe o nome do ROOT [ $nome_root ]: " nome_root
> > [ "$nome_root" ] || nome_root=root # verifica se não deu o nome
> > read -p "Senha do ROOT (não será mostrada na tela): " -s senha_root
> > [ "$senha_root" ] || break # verifica se não deu a senha
> > fi
> > # senha errada
> > mysql -u $nome_root -p$senha_root -e " " >> mc2_db.log
> > if [ $? -ne 0 ]; then
> > echo
> > echo ERRO de acesso ao mySQL [nome e/ou senha]
> > echo ERRO de acesso ao mySQL [nome e/ou senha] >> mc2_db.log
> > break
> > fi
> >
> > clear
> > echo
> ==================================================================
> > echo Sistema de implantação de banco de dados mySQL
> > echo ----------------------------------------------------------
> >
> > if [ $modo = "g" ]; then #modo grafico
> > dialog \
> > --title 'INSTALANDO O SISTEMA' \
> > --msgbox 'Criando database principal' \
> > 0 0
> >
> > dialog \
> > --title 'INSTALANDO O SISTEMA' \
> > --msgbox 'Criando tabela: PRODUTOS' \
> > 0 0
> >
> > else #modo texto
> > echo INSTALANDO SISTEMA
> > echo Criando database principal $nome_db
> > mysql -u $nome_root -p$senha_root -e "create database if not exists
> > $nome_db;" >> mc2_db.log
> > # verificar retorno, se erro...
> > if [ $? -ne 0 ]; then
> > echo
> > echo ERRO na criação do database...
> > echo ERRO na criação do database... >> mc2_db.log
> > break
> > fi
> >
> > # Agora chama mySQL usando arquivo de lote cria_sys.sql e gravando
> log em
> > mc2_db.log:
> > echo Criando as tabelas e preenchendo com conteúdo default...
> > echo " Tabela PRODUTOS (cria_sys1.sql)"
> > mysql -u $nome_root -p$senha_root $nome_db -t -vvv < cria_sys1.sql
> >>
> > mc2_db.log
> > if [ $? -ne 0 ]; then
> > echo
> > echo ERRO na criação da tabela PRODUTOS...
> > echo ERRO na criação da tabela PRODUTOS... >> mc2_db.log
> > break
> > fi
> > fi
> >
> > deu_erro=0
> > break
> > done
> > echo
> > echo
> ==================================================================
> > echo
> ================================================================== >>
> >
> > mc2_db.log
> > if [ $deu_erro -eq 1 ]; then
> > echo Processo de implantação NÃO encerrado corretamente!!!
> > echo " ==="
> > echo Verifique o arquivo de log: mc2_db.log
> > echo Processo de implantação NÃO encerrado corretamente!!! >>
> mc2_db.log
> > else
> > echo Processo de implantação encerrado corretamente. Parabens!!!
> > echo Processo de implantação encerrado corretamente. Parabens!!! >>
> > mc2_db.log
> > fi
> > echo Bye...
> > echo
> >
> > Arquivo (2)-----------------------:
> > -- cria_sys.sql
> > -- rotina que cria todas as tabelas do banco de dados master
> (database)
> > para
> > mySQL em modo batch
> > --
> >
> > -- =============== cria as tabelas (se não existirem):
> >
> > -- 1a: tabela produtos:
> > CREATE TABLE IF NOT EXISTS produtos (
> > codigo DOUBLE(13,0) UNSIGNED,
> > descricao VARCHAR(40),
> > estoque INTEGER UNSIGNED DEFAULT 0,
> > preco DECIMAL(10,2) DEFAULT 0.00,
> > PRIMARY KEY (codigo)
> > );
> > -- da direitos para um usuario: usernome, na tabela acima
> > -- GRANT select,insert,update,delete ON produtos TO
> 'usernome'@'localhost'
> >
> > -- identified by 'usersenha';
> > -- FLUSH PRIVILEGES;
> >
> > -- Se todas as tabelas começarem com um prefixo comum, pode-se dar
> > -- direitos globais:
> > -- GRANT select,insert,update,delete ON pref*.* TO
> 'usernome'@'localhost'
> > -- identified by 'usersenha';
> > -- FLUSH PRIVILEGES;
> >
> > -- Outra opção (e melhor) é dar previlégios de acesso a um grupo:
> > -- GRANT select,insert,update,delete ON pref*.*|produtos TO GROUP
> > meugrupo;
> > -- FLUSH PRIVILEGES;
> >
> > -- 1b: preenche tabela produtos (IGNORE pula registros duplicados):
> > INSERT IGNORE INTO produtos VALUES
> > (1234567890123, "produtos certo", 100, 1.99),
> > (2345678901231, "produto errado", 110, 2.99),
> > (3456789012312, "produtos nao sei", 2100, 51.00),
> > (4567890123123, "produto ruim", 130, 2.00),
> > (5678901231234, "produtos bom", 1, 12.66),
> > (6789012312345, "produtos mais", 0, 41.00),
> > (7890123123456, "produtos menos", 710, 51.87),
> > (8901231234567, "produtos talvez", 330, 21.29),
> > (9012312345678, "produto oito", 830, 3821.00)
> > ;
> > -- select codigo, descricao, estoque, LPAD(FORMAT(preco,2),20," ")
> AS
> > -- "preco de venda R$" from produtos;
> >
> > -- 2a: proxima tabela:
> > -- 2b: dados desta tabela
> >
> > Arquivo (3)-----------------------:
> > -- cria_sys1.sql
> >
> > -- tabela produtos:
> > CREATE TABLE IF NOT EXISTS produtos (
> > codigo DOUBLE(13,0) UNSIGNED,
> > descricao VARCHAR(40),
> > estoque INTEGER UNSIGNED DEFAULT 0,
> > preco DECIMAL(10,2) DEFAULT 0.00,
> > PRIMARY KEY (codigo)
> > );
> > -- da direitos para um usuario: usernome, na tabela acima
> > -- GRANT select,insert,update,delete ON produtos TO
> 'usernome'@'localhost'
> >
> > -- identified by 'usersenha';
> > -- FLUSH PRIVILEGES;
> >
> > -- Se todas as tabelas começarem com um prefixo comum, pode-se dar
> > -- direitos globais:
> > -- GRANT select,insert,update,delete ON pref*.* TO
> 'usernome'@'localhost'
> > -- identified by 'usersenha';
> > -- FLUSH PRIVILEGES;
> >
> > -- Outra opção (e melhor) é dar previlégios de acesso a um grupo:
> > -- GRANT select,insert,update,delete ON pref*.*|produtos TO GROUP
> > meugrupo;
> > -- FLUSH PRIVILEGES;
> >
> > -- 1b: preenche tabela produtos (IGNORE pula registros duplicados):
> > INSERT IGNORE INTO produtos VALUES
> > (1234567890123, "produtos certo", 100, 1.99),
> > (2345678901231, "produto errado", 110, 2.99),
> > (3456789012312, "produtos nao sei", 2100, 51.00),
> > (4567890123123, "produto ruim", 130, 2.00),
> > (5678901231234, "produtos bom", 1, 12.66),
> > (6789012312345, "produtos mais", 0, 41.00),
> > (7890123123456, "produtos menos", 710, 51.87),
> > (8901231234567, "produtos talvez", 330, 21.29),
> > (9012312345678, "produto oito", 830, 3821.00)
> > ;
> > -- select codigo, descricao, estoque, LPAD(FORMAT(preco,2),20," ")
> AS
> > -- "preco de venda R$" from produtos;
> >
> > -- Use cria_sys2.sql, cris_sys3.sql e assim em diante para as demais
> > tabelas.
> >
> > Arquivo (4)-----------------------:
> > #!/bin/bash
> > clear
> > echo
> ==================================================================
> > echo Sistema de implantação de banco de dados mySQL
> > echo Rotina para destruir sistema implantado: database e tabelas
> > echo ----------------------------------------------------------
> > echo
> ================================================================== >
> > mc2_db.log
> > echo Sistema de implantação de banco de dados mySQL >> mc2_db.log
> > echo Rotina para destruir sistema implantado: database e tabelas >>
> > mc2_db.log
> > echo ---------------------------------------------------------- >>
> > mc2_db.log
> >
> > # ======================= variaveis pré-fixadas:
> > nome_root=root
> > nome_db=teste # DEVE ser alterado cfme sistema !!!
> > senha_root=
> > deu_erro=1 #0=nao 1=sim
> > # ...aqui outras
> > # ==============================================
> >
> > while true; do
> > echo Somente o ROOT pode usar esta rotina.
> > echo
> > read -p "Informe o nome do ROOT [ $nome_root ]: " nome_root
> > [ "$nome_root" ] || nome_root=root # verifica se não deu o nome
> > read -p "Senha do ROOT (não será mostrada na tela): " -s senha_root
> > [ "$senha_root" ] || break # verifica se não deu a senha
> > # senha errada
> > mysql -u $nome_root -p$senha_root -e " " >> mc2_db.log
> > if [ $? -ne 0 ]; then
> > echo
> > echo ERRO de acesso ao mySQL [nome e/ou senha]
> > echo ERRO de acesso ao mySQL [nome e/ou senha] >> mc2_db.log
> > break
> > fi
> >
> > clear
> > echo
> ==================================================================
> > echo Sistema de implantação de banco de dados mySQL
> > echo Rotina para destruir sistema implantado: database e tabelas
> > echo ----------------------------------------------------------
> >
> > echo DESTRUINDO SISTEMA
> >
> > mysql -u $nome_root -p$senha_root $nome_db -vvv -e "USE $nome_db;"
> >>
> > mc2_db.log
> > if [ $? -ne 0 ]; then
> > echo
> > echo ERRO de abertura do database $nome_db...
> > echo ERRO de abertura do database $nome_db... >> mc2_db.log
> > break
> > fi
> >
> > echo
> > echo Apagando tabela PRODUTOS
> > mysql -u $nome_root -p$senha_root $nome_db -vvv -e "DROP TABLE
> produtos;"
> > >> mc2_db.log
> > if [ $? -ne 0 ]; then
> > echo
> > echo ERRO na destruição da tabela PRODUTOS...
> > echo ERRO na destruição da tabela PRODUTOS... >> mc2_db.log
> > break
> > fi
> >
> > # outras tables aqui
> >
> > echo Apagando database principal $nome_db
> > mysql -u $nome_root -p$senha_root $nome_db -vvv -e "DROP DATABASE
> > $nome_db;" >> mc2_db.log
> > # verificar retorno, se erro...
> > if [ $? -ne 0 ]; then
> > echo
> > echo ERRO na destruição do database...
> > echo ERRO na destruição do database... >> mc2_db.log
> > break
> > fi
> >
> > deu_erro=0
> > break
> > done
> > echo
> > echo
> ==================================================================
> > echo
> ================================================================== >>
> >
> > mc2_db.log
> > if [ $deu_erro -eq 1 ]; then
> > echo Processo de destruição NÃO encerrado corretamente!!!
> > echo " ==="
> > echo Verifique o arquivo de log: mc2_db.log
> > echo Processo de destruição NÃO encerrado corretamente!!! >>
> mc2_db.log
> > else
> > echo Processo de destruição encerrado corretamente. Parabens!!!
> > echo Processo de destruição encerrado corretamente. Parabens!!! >>
> > mc2_db.log
> > fi
> > echo Bye...
> > echo
> >
> > ======================================= fim
> >
> > Espero ter ajudado e agradeço publicamente ao Júlio e Aurelio.net
> pelas
> > lições!!!
> >
> > Aguardo críticas e sujestões.
> >
> > Nogueira
> > address@hidden <nogueira_jr%40ig.com.br>
> >
> > PS: Estou terminando as mesmas rotinas para SQLite3 !!!
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> > 
> >
> 
> -- 
> Tiago B Peczenyj
> Linux User #405772
> 
> http://peczenyj.blogspot.com/
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 
> 
> 
>  


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]