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 <[EMAIL PROTECTED]> 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 > [EMAIL PROTECTED] <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]
