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 <[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] > > > > > > [As partes desta mensagem que não continham texto foram removidas]
