Re: [shell-script] Telnet com Sqlplus
Tiago, primeiramente obrigado pela ajuda, mas estou recebendo o seguinte erro: wrong # args: should be "set varName ?newValue? while executing "set ip [lindex $argv 0] # primeiro argumento" (file "./conexao" line 4) Meu código: #!/bin/bash # Programa para conectar e abrir sqlplus # # INICIAR VARIAVEIS ## vl_arqconf=tnsnames.txt vl_banco=`tr 'A-Z' 'a-z' <<< $1` # FUNÇÔES # INICIAR PROGRAMA ### vl_ip=`cat $vl_arqconf | grep -i $vl_banco | cut -f2 -d\;` echo $vl_ip ./conexao ${vl_ip} USUARIO SENHA "ORACLE_SID=${vl_banco}a" ## FIM DO PROGRAMA ### #!/usr/bin/expect set timeout 20 set ip [lindex $argv 0] # primeiro argumento set user [lindex $argv 1] # segundo... etc set password [lindex $argv 2] set oracmd [lindex $argv 3] spawn telnet $ip # aqui ele 'pega' o telnet expect "login:" # aha, pediu o login? send "$user " # toma o username do cara! expect "password:" # mesma coisa. send "$password " # facil não? send "$oracmd" # agora aquele toque final send "sqlplus /" interact # E aqui devolve a interação para o usuario []s Carlos Ferreira Em 06/11/07, Tiago Barcellos Peczenyj <[EMAIL PROTECTED]> escreveu: > > use Expect: > > Inspirado aqui: > http://www.osix.net/modules/article/?id=30 > > #!/bin/bash > vl_arqconf=tnsnames.txt > vl_banco=`tr 'A-Z' 'a-z' <<< $1` > > vl_ip=`grep -i $vl_banco $vl_arqconf | cut -f2 -d\;` > > ./conexao ${vl_ip} usuario senha "ORACLE_SID=${vl_banco}a" > > script 'conexao' abaixo: > #!/usr/bin/expect > set timeout 20 > > set ip [lindex $argv 0] # primeiro argumento > set user [lindex $argv 1] # segundo... etc > set password [lindex $argv 2] > set oracmd [lindex $argv 3] > > spawn telnet $ip # aqui ele 'pega' o telnet > > expect "login:" # aha, pediu o login? > send "$user " # toma o username do cara! > > expect "assword:" # mesma coisa. > send "$password " # facil não? > > send "$oracmd" # agora aquele toque final > send "sqlplus /" > > interact # E aqui devolve a interação para o usuario > On Nov 6, 2007 5:19 PM, Carlos Ferreira <[EMAIL > PROTECTED]> > wrote: > > > > Pessoal > > estou com o seguinte problema, fiz o script abaixo dentro de um script > > shell: > > #!/bin/bash > > # Programa para conectar e abrir sqlplus > > # > > > > # INICIAR VARIAVEIS ## > > vl_arqconf=tnsnames.txt > > vl_banco=`echo $1 | tr 'A-Z' 'a-z'` > > > > # INICIAR PROGRAMA ### > > vl_ip=`cat $vl_arqconf | grep -i $vl_banco | cut -f2 -d\;` > > > > (echo usuario; sleep 3; echo senha; sleep 3; echo > > ORACLE_SID=${vl_banco}a; sleep 3; echo sqlplus /; sleep 3) | telnet > > ${vl_ip} > > > > ### fim do script ### > > > > Acontece que eu queria que o script me deixasse o sqlplus aberto na > > tela, mas isto não acontece, alguma sugestão? > > > > Desde ja agradeço a atenção de todos. > > > > []s > > > > Carlos Ferreira > > > > > > -- > Tiago B Peczenyj > Linux User #405772 > > http://peczenyj.blogspot.com/ > "what does not kill us makes us stronger" > > -- Carlos Ferreira Analista de Desenvolvimento Niterói - RJ - Brasil LinuxUser #271002 http://www.carnivorosemdentes.blogger.com.br/ [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Telnet com Sqlplus
Hey Sr. Carlos, apesar de não ter muito know-how no assunto, creio que esse é um problema no seu script em expect. Procure eliminar os comentários de final de linha (as frases após '#') ou deixá-los em uma linha sem código. Por exemplo, tente substituir: set ip [lindex $argv 0] # primeiro argumento set user [lindex $argv 1] # segundo... etc por # primeiro argumento set ip [lindex $argv 0] # segundo... etc set user [lindex $argv 1] Espero ter ajudado. Hasta! jr. On Nov 7, 2007 8:15 AM, Carlos Ferreira <[EMAIL PROTECTED]> wrote: > Tiago, > primeiramente obrigado pela ajuda, mas estou recebendo o seguinte erro: > wrong # args: should be "set varName ?newValue? > while executing > "set ip [lindex $argv 0] # primeiro argumento" > (file "./conexao" line 4) > > Meu código: > #!/bin/bash > # Programa para conectar e abrir sqlplus > # > > # INICIAR VARIAVEIS ## > vl_arqconf=tnsnames.txt > vl_banco=`tr 'A-Z' 'a-z' <<< $1` > # FUNÇÔES > > > # INICIAR PROGRAMA ### > > vl_ip=`cat $vl_arqconf | grep -i $vl_banco | cut -f2 -d\;` > echo $vl_ip > ./conexao ${vl_ip} USUARIO SENHA "ORACLE_SID=${vl_banco}a" > > ## FIM DO PROGRAMA ### > > #!/usr/bin/expect > set timeout 20 > > set ip [lindex $argv 0] # primeiro argumento > set user [lindex $argv 1] # segundo... etc > set password [lindex $argv 2] > set oracmd [lindex $argv 3] > > spawn telnet $ip # aqui ele 'pega' o telnet > > expect "login:" # aha, pediu o login? > send "$user " # toma o username do cara! > > expect "password:" # mesma coisa. > send "$password " # facil não? > > send "$oracmd" # agora aquele toque final > send "sqlplus /" > > interact # E aqui devolve a interação para o usuario > > []s > > Carlos Ferreira > > Em 06/11/07, Tiago Barcellos Peczenyj <[EMAIL PROTECTED]> escreveu: > > > > use Expect: > > > > Inspirado aqui: > > http://www.osix.net/modules/article/?id=30 > > > > #!/bin/bash > > vl_arqconf=tnsnames.txt > > vl_banco=`tr 'A-Z' 'a-z' <<< $1` > > > > vl_ip=`grep -i $vl_banco $vl_arqconf | cut -f2 -d\;` > > > > ./conexao ${vl_ip} usuario senha "ORACLE_SID=${vl_banco}a" > > > > script 'conexao' abaixo: > > #!/usr/bin/expect > > set timeout 20 > > > > set ip [lindex $argv 0] # primeiro argumento > > set user [lindex $argv 1] # segundo... etc > > set password [lindex $argv 2] > > set oracmd [lindex $argv 3] > > > > spawn telnet $ip # aqui ele 'pega' o telnet > > > > expect "login:" # aha, pediu o login? > > send "$user " # toma o username do cara! > > > > expect "assword:" # mesma coisa. > > send "$password " # facil não? > > > > send "$oracmd" # agora aquele toque final > > send "sqlplus /" > > > > interact # E aqui devolve a interação para o usuario > > On Nov 6, 2007 5:19 PM, Carlos Ferreira <[EMAIL > > PROTECTED]> > > wrote: > > > > > > Pessoal > > > estou com o seguinte problema, fiz o script abaixo dentro de um script > > > shell: > > > #!/bin/bash > > > # Programa para conectar e abrir sqlplus > > > # > > > > > > # INICIAR VARIAVEIS ## > > > vl_arqconf=tnsnames.txt > > > vl_banco=`echo $1 | tr 'A-Z' 'a-z'` > > > > > > # INICIAR PROGRAMA ### > > > vl_ip=`cat $vl_arqconf | grep -i $vl_banco | cut -f2 -d\;` > > > > > > (echo usuario; sleep 3; echo senha; sleep 3; echo > > > ORACLE_SID=${vl_banco}a; sleep 3; echo sqlplus /; sleep 3) | telnet > > > ${vl_ip} > > > > > > ### fim do script ### > > > > > > Acontece que eu queria que o script me deixasse o sqlplus aberto na > > > tela, mas isto não acontece, alguma sugestão? > > > > > > Desde ja agradeço a atenção de todos. > > > > > > []s > > > > > > Carlos Ferreira > > > > > > > > > > -- > > Tiago B Peczenyj > > Linux User #405772 > > > > http://peczenyj.blogspot.com/ > > "what does not kill us makes us stronger" > > > > > > > > -- > Carlos Ferreira > Analista de Desenvolvimento > Niterói - RJ - Brasil > LinuxUser #271002 > http://www.carnivorosemdentes.blogger.com.br/ > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > - > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > - > Sair da lista: [EMAIL PROTECTED] > - > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > - > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > > Links do Yahoo! Grupos > > >
Re: [shell-script] Telnet com Sqlplus
Edjunior, realmente o erro era o comentário na mesma linha, obrigado pela ajuda, mas agora estou chegando até o login no telnet e a senha não é passada, fica esperando a senha até que ele escreve todos os outros comandos na mesma linha e cai. o erro: AIX Version 5 (C) Copyrights by IBM and by others 1982, 2007. login: usuariosenhaORACLE_SID=sid_do_bancoasqlplus //dev/pts/3: 3004-038 Login timed out after 60 seconds. Connection closed by foreign host []s Carlos Ferreira Em 07/11/07, Edjunior Machado <[EMAIL PROTECTED]> escreveu: > > Hey Sr. Carlos, > > apesar de não ter muito know-how no assunto, creio que esse é um > problema no seu script em expect. Procure eliminar os comentários de > final de linha (as frases após '#') ou deixá-los em uma linha sem > código. Por exemplo, tente substituir: > > set ip [lindex $argv 0] # primeiro argumento > set user [lindex $argv 1] # segundo... etc > > por > > # primeiro argumento > set ip [lindex $argv 0] > # segundo... etc > set user [lindex $argv 1] > > Espero ter ajudado. > Hasta! > > jr. > > > On Nov 7, 2007 8:15 AM, Carlos Ferreira <[EMAIL > PROTECTED]> > wrote: > > Tiago, > > primeiramente obrigado pela ajuda, mas estou recebendo o seguinte erro: > > wrong # args: should be "set varName ?newValue? > > while executing > > "set ip [lindex $argv 0] # primeiro argumento" > > (file "./conexao" line 4) > > > > Meu código: > > #!/bin/bash > > # Programa para conectar e abrir sqlplus > > # > > > > # INICIAR VARIAVEIS ## > > vl_arqconf=tnsnames.txt > > vl_banco=`tr 'A-Z' 'a-z' <<< $1` > > # FUNÇÔES > > > > > > # INICIAR PROGRAMA ### > > > > vl_ip=`cat $vl_arqconf | grep -i $vl_banco | cut -f2 -d\;` > > echo $vl_ip > > ./conexao ${vl_ip} USUARIO SENHA "ORACLE_SID=${vl_banco}a" > > > > ## FIM DO PROGRAMA ### > > > > #!/usr/bin/expect > > set timeout 20 > > > > set ip [lindex $argv 0] # primeiro argumento > > set user [lindex $argv 1] # segundo... etc > > set password [lindex $argv 2] > > set oracmd [lindex $argv 3] > > > > spawn telnet $ip # aqui ele 'pega' o telnet > > > > expect "login:" # aha, pediu o login? > > send "$user " # toma o username do cara! > > > > expect "password:" # mesma coisa. > > send "$password " # facil não? > > > > send "$oracmd" # agora aquele toque final > > send "sqlplus /" > > > > interact # E aqui devolve a interação para o usuario > > > > []s > > > > Carlos Ferreira > > > > Em 06/11/07, Tiago Barcellos Peczenyj <[EMAIL > > PROTECTED]> > escreveu: > > > > > > use Expect: > > > > > > Inspirado aqui: > > > http://www.osix.net/modules/article/?id=30 > > > > > > #!/bin/bash > > > vl_arqconf=tnsnames.txt > > > vl_banco=`tr 'A-Z' 'a-z' <<< $1` > > > > > > vl_ip=`grep -i $vl_banco $vl_arqconf | cut -f2 -d\;` > > > > > > ./conexao ${vl_ip} usuario senha "ORACLE_SID=${vl_banco}a" > > > > > > script 'conexao' abaixo: > > > #!/usr/bin/expect > > > set timeout 20 > > > > > > set ip [lindex $argv 0] # primeiro argumento > > > set user [lindex $argv 1] # segundo... etc > > > set password [lindex $argv 2] > > > set oracmd [lindex $argv 3] > > > > > > spawn telnet $ip # aqui ele 'pega' o telnet > > > > > > expect "login:" # aha, pediu o login? > > > send "$user " # toma o username do cara! > > > > > > expect "assword:" # mesma coisa. > > > send "$password " # facil não? > > > > > > send "$oracmd" # agora aquele toque final > > > send "sqlplus /" > > > > > > interact # E aqui devolve a interação para o usuario > > > On Nov 6, 2007 5:19 PM, Carlos Ferreira <[EMAIL > > > PROTECTED] > > > > > wrote: > > > > > > > > Pessoal > > > > estou com o seguinte problema, fiz o script abaixo dentro de um > script > > > > shell: > > > > #!/bin/bash > > > > # Programa para conectar e abrir sqlplus > > > > # > > > > > > > > # INICIAR VARIAVEIS ## > > > > vl_arqconf=tnsnames.txt > > > > vl_banco=`echo $1 | tr 'A-Z' 'a-z'` > > > > > > > > # INICIAR PROGRAMA ### > > > > vl_ip=`cat $vl_arqconf | grep -i $vl_banco | cut -f2 -d\;` > > > > > > > > (echo usuario; sleep 3; echo senha; sleep 3; echo > > > > ORACLE_SID=${vl_banco}a; sleep 3; echo sqlplus /; sleep 3) | telnet > > > > ${vl_ip} > > > > > > > > ### fim do script ### > > > > > > > > Acontece que eu queria que o script me deixasse o sqlplus aberto na > > > > tela, mas isto não acontece, alguma sugestão? > > > > > > > > Desde ja agradeço a atenção de todos. > > > > > > > > []s > > > > > > > > Carlos Ferreira > > > > > > > > > > > > > > -- > > > Tiago B Peczenyj > > > Linux User #405772 > > > > > > http://peczenyj.blogspot.com/ > > > "what does not kill us makes us stronger" > > > > > > > > > > > > > > -- > > Carlos Ferreira > > Analista de Desenvolvimento > > Niterói - RJ - Brasil > > LinuxUser #271002 > > http://www.carnivorosemdentes.blogger.com.br/ > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > --
[shell-script] Ler Linhas do Arquivo
Gurizada! ..tenho um arquivo texto..com o formato abaixo..: 10393039374943 030490 303202 39302 30484030393903 403032 223212 33201 3038947738383 303844 423434 44343 43434343434344 434343 43434432323 30484030393903 403032 223212 33201 10393039374943 030490 303202 39302 preciso fazer um for... que leia linha por linha deste arquivo preciso que a cada laço do for, tenha a seguinte saida var1= 39302 <- ultima coluna da primeira linha var2= 33201<- ultima coluna da segunda linha no proximo laço seria..: var1= 44343 <- ultima coluna da terceira linha var2= 32323 <- ultima coluna da quarta linha alguma ideia...
Re: [shell-script] Redirecionar erro na tela
Sim, você está correto, foi um erro meu. Enviei um email em seguinta corrigindo o exemplo. On Nov 7, 2007 4:11 PM, Flavio Junior <[EMAIL PROTECTED]> wrote: > > > > > So um parenteses.. > > teste=$(ifconfig ppp0) não vai te retornar, na variavel teste, o > codigo de saida do comando. > Na verdade, se ppp0 nao existir é vazio, se não é a linha do ifconfig > Veja: > > lazlo:~# TESTE=$(ifconfig nada) > nada: error fetching interface information: Device not found > lazlo:~# echo $TESTE > > lazlo:~# TESTE=$(ifconfig eth0) > lazlo:~# echo $TESTE > eth0 Link encap:Ethernet HWaddr 00:11:25:A4:7A:68 inet > addr:192.168.4.4 Bcast:192.168.4.255 Mask:255.255.255.0 inet6 addr: > fe80::211:25ff:fea4:7a68/64 Scope:Link UP BROADCAST RUNNING MULTICAST > MTU:1500 Metric:1 RX packets:429567781 errors:0 dropped:0 overruns:0 > frame:0 TX packets:563296397 errors:0 dropped:0 overruns:0 carrier:0 > collisions:0 txqueuelen:1000 RX bytes:154435067752 (143.8 GiB) TX > bytes:560701904150 (522.1 GiB) Interrupt:169 > lazlo:~# > > lazlo:~# ifconfig nada > nada: error fetching interface information: Device not found > lazlo:~# TESTE=$? > lazlo:~# echo $TESTE > 1 > lazlo:~# > > Espero ter explicado... > > Flávio do Carmo Junior > > > > On Nov 7, 2007 1:05 PM, mups. cp <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > Ao invés de fazer grep direto na saída de ifconfig ppp0, você pode > > verificar a resposta do comando primeiro detectando se a interface > > existe. > > Se a interface existe teste=$(ifconfig ppp0), a variável $teste terá o > > valor 0 caso não exista terá o valor 1. Assim fica mais fácil de fazer > > o tratamento. Ou algo assim; > > > > ifconfig ppp0 > /dev/null 2>&1 && echo "interface existe" || echo > > "interface não existe" > > > > On Nov 7, 2007 12:45 PM, bossonaroesao06 <[EMAIL PROTECTED]> > > wrote: > > > > > > > > > > > > > > > Pessoal, > > > Estou tentando verificar a existência da conexão ppp0 através do > > > ifconfig e até funnciona certinho. O problema é que quando não > > > existe a ppp0 ele mostra esse erro no meio do script. Tem como tirar > > > isso? > > > > > > Script: > > > #!/bin/bash > > > echo "Verificando a interface ppp0..." > > > placappp=$(ifconfig ppp0 | grep "ppp0: erro") > > > if [ -z "$placappp" ]; then > > > echo "A Interface ppp0 nao existe..." > > > else > > > echo "A Interface ppp0 existe..." > > > fi > > > > > > Olhem o resultado quando nao existe a ppp0: > > > > > > #Verificando a interface ppp0... > > > #ppp0: erro obtendo informaçoes da interface: %s: dispositivo nao > > > encontrado > > > #A Interface ppp0 nao existe... > > > > > > Eu gostaria que ficasse assim: > > > > > > #Verificando a interface ppp0... > > > #A Interface ppp0 nao existe... > > > > > > Alguem me ajuda? > > > Obrigado > > > > > > > > > > > > > > >
Re: [shell-script] Ler Linhas do Arquivo
Uma alternativazinha em Shell... Mas achei a do awk do Miranda mais bunita: lazlo:~# cat x 10393039374943 030490 303202 39302 30484030393903 403032 223212 33201 23038947738383 303844 423434 44343 43434343434344 434343 434344 32323 30484030393903 403032 223212 33201 10393039374943 030490 303202 39302 lazlo:~# LINHA=1; while read A B C VAR; do if [ $(expr $LINHA % 2) -ne 0 ]; then echo VAR1=$VAR; else echo VAR2=$VAR; fi; let LINHA+=1; done < x VAR1=39302 VAR2=33201 VAR1=44343 VAR2=32323 VAR1=33201 VAR2=39302 lazlo:~# x = nome do arquivo :D Flávio do Carmo Júnior On Nov 7, 2007 4:44 PM, miranda <[EMAIL PROTECTED]> wrote: > mas abandonando a idéia do for e do laço veja isso : > > [EMAIL PROTECTED] tmp]$ cat xuh > 10393039374943 030490 303202 39302 > 30484030393903 403032 223212 33201 > 3038947738383 303844 423434 44343 > 43434343434344 434343 434344 32323 > 30484030393903 403032 223212 33201 > 10393039374943 030490 303202 39303 > 10393039374943 030490 303202 39304 > 30484030393903 403032 223212 33205 > 3038947738383 303844 423434 44347 > 43434343434344 434343 434344 32328 > 30484030393903 403032 223212 33209 > 10393039374943 030490 303202 39300 > > > [EMAIL PROTECTED] tmp]$ cat awk.cmd > NR%2 == 1 {VAR1=$NF} > NR%2 == 0 {VAR2=$NF;printf "VAR1= %d\nVAR2= %d\n",VAR1,VAR2} > > [EMAIL PROTECTED] tmp]$ awk -f awk.cmd xuh > VAR1= 39302 > VAR2= 33201 > VAR1= 44343 > VAR2= 32323 > VAR1= 33201 > VAR2= 39303 > VAR1= 39304 > VAR2= 33205 > VAR1= 44347 > VAR2= 32328 > VAR1= 33209 > VAR2= 39300 > > > > On Wed, 2007-11-07 at 15:32 -0300, miranda wrote: > > se o for lerá linha por linha > > após ler a primeira linha , ou seja , no primeiro laço > > ainda não terá informação da segunda linha . > > Não é meio impossível isso , não ? > > A não ser que possa ler de duas em duas linhas ... > > > > On Wed, 2007-11-07 at 15:14 -0400, Eduardo Lucas wrote: > > > Gurizada! > > > ..tenho um arquivo texto..com o formato abaixo..: > > > > > > 10393039374943 030490 303202 39302 > > > 30484030393903 403032 223212 33201 > > > 3038947738383 303844 423434 44343 > > > 43434343434344 434343 434344 32323 > > > 30484030393903 403032 223212 33201 > > > 10393039374943 030490 303202 39302 > > > > > > preciso fazer um for... que leia linha por linha deste arquivo > > > preciso que a cada laço do for, tenha a seguinte saida > > > > > > var1= 39302 <- ultima coluna da primeira linha > > > var2= 33201<- ultima coluna da segunda linha > > > > > > no proximo laço seria..: > > > > > > var1= 44343 <- ultima coluna da terceira linha > > > var2= 32323 <- ultima coluna da quarta linha > > > > > > alguma ideia... > > > > > > > > > > > > > > > > > > > > - > > Esta lista não admite a abordagem de outras liguagens de programação, como > > perl, C etc. Quem insistir em não seguir esta regra será moderado sem > > prévio aviso. > > - > > Sair da lista: [EMAIL PROTECTED] > > - > > Esta lista é moderada de acordo com o previsto em > > http://www.listas-discussao.cjb.net > > - > > Servidor Newsgroup da lista: news.gmane.org > > Grupo: gmane.org.user-groups.programming.shell.brazil > > > > > > Links do Yahoo! Grupos > > > > > > > > > > - > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > - > Sair da lista: [EMAIL PROTECTED] > - > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > - > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > > Links do Yahoo! Grupos > > >
Re: [shell-script] Ler Linhas do Arquivo
mas abandonando a idéia do for e do laço veja isso : [EMAIL PROTECTED] tmp]$ cat xuh 10393039374943 030490 303202 39302 30484030393903 403032 223212 33201 3038947738383 303844 423434 44343 43434343434344 434343 434344 32323 30484030393903 403032 223212 33201 10393039374943 030490 303202 39303 10393039374943 030490 303202 39304 30484030393903 403032 223212 33205 3038947738383 303844 423434 44347 43434343434344 434343 434344 32328 30484030393903 403032 223212 33209 10393039374943 030490 303202 39300 [EMAIL PROTECTED] tmp]$ cat awk.cmd NR%2 == 1 {VAR1=$NF} NR%2 == 0 {VAR2=$NF;printf "VAR1= %d\nVAR2= %d\n",VAR1,VAR2} [EMAIL PROTECTED] tmp]$ awk -f awk.cmd xuh VAR1= 39302 VAR2= 33201 VAR1= 44343 VAR2= 32323 VAR1= 33201 VAR2= 39303 VAR1= 39304 VAR2= 33205 VAR1= 44347 VAR2= 32328 VAR1= 33209 VAR2= 39300 On Wed, 2007-11-07 at 15:32 -0300, miranda wrote: > se o for lerá linha por linha > após ler a primeira linha , ou seja , no primeiro laço > ainda não terá informação da segunda linha . > Não é meio impossível isso , não ? > A não ser que possa ler de duas em duas linhas ... > > On Wed, 2007-11-07 at 15:14 -0400, Eduardo Lucas wrote: > > Gurizada! > > ..tenho um arquivo texto..com o formato abaixo..: > > > > 10393039374943 030490 303202 39302 > > 30484030393903 403032 223212 33201 > > 3038947738383 303844 423434 44343 > > 43434343434344 434343 434344 32323 > > 30484030393903 403032 223212 33201 > > 10393039374943 030490 303202 39302 > > > > preciso fazer um for... que leia linha por linha deste arquivo > > preciso que a cada laço do for, tenha a seguinte saida > > > > var1= 39302 <- ultima coluna da primeira linha > > var2= 33201<- ultima coluna da segunda linha > > > > no proximo laço seria..: > > > > var1= 44343 <- ultima coluna da terceira linha > > var2= 32323 <- ultima coluna da quarta linha > > > > alguma ideia... > > > > > > > > > > > > - > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > - > Sair da lista: [EMAIL PROTECTED] > - > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > - > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > > Links do Yahoo! Grupos > > > - Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. - Sair da lista: [EMAIL PROTECTED] - Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net - Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Res: [shell-script] Ler Linhas do Arquivo
Aloha! Poderia usar o seguinte.. cat | tr -s ' ' ' ' | cut -f -d' ' uso o tr -s ' ' ' ' para deixar apenas um espaço em branco onde tiver mais do que um, para facilitar no cut exemplo de como ficaria o output do comando.. [EMAIL PROTECTED] ~]# cat arriba.txt | tr -s ' ' ' ' | cut -f1 -d' ' 10393039374943 30484030393903 3038947738383 43434343434344 30484030393903 10393039374943 - Mensagem original De: Eduardo Lucas <[EMAIL PROTECTED]> Para: shell-script@yahoogrupos.com.br Enviadas: Quarta-feira, 7 de Novembro de 2007 17:14:41 Assunto: [shell-script] Ler Linhas do Arquivo Gurizada! ..tenho um arquivo texto..com o formato abaixo..: 10393039374943 030490 303202 39302 30484030393903 403032 223212 33201 3038947738383 303844 423434 44343 43434343434344 434343 43434432323 30484030393903 403032 223212 33201 10393039374943 030490 303202 39302 preciso fazer um for... que leia linha por linha deste arquivo preciso que a cada laço do for, tenha a seguinte saida var1= 39302 <- ultima coluna da primeira linha var2= 33201<- ultima coluna da segunda linha no proximo laço seria..: var1= 44343 <- ultima coluna da terceira linha var2= 32323 <- ultima coluna da quarta linha alguma ideia... - Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. - Sair da lista: [EMAIL PROTECTED] - Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net - Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Re: Redirecionar erro na tela
Deu certo Obrigado
Re: [shell-script] Redirecionar erro na tela
Acredito que, se vc redirecionar a saída de erro para a saída padrão no ifconfig tudo deve funcionar ifconfig lalala 2>&1 | grep ... On 11/7/07, bossonaroesao06 <[EMAIL PROTECTED]> wrote: > > > > > > > Pessoal, > Estou tentando verificar a existência da conexão ppp0 através do > ifconfig e até funnciona certinho. O problema é que quando não > existe a ppp0 ele mostra esse erro no meio do script. Tem como tirar > isso? > > Script: > #!/bin/bash > echo "Verificando a interface ppp0..." > placappp=$(ifconfig ppp0 | grep "ppp0: erro") > if [ -z "$placappp" ]; then > echo "A Interface ppp0 nao existe..." > else > echo "A Interface ppp0 existe..." > fi > > Olhem o resultado quando nao existe a ppp0: > > #Verificando a interface ppp0... > #ppp0: erro obtendo informaçoes da interface: %s: dispositivo nao > encontrado > #A Interface ppp0 nao existe... > > Eu gostaria que ficasse assim: > > #Verificando a interface ppp0... > #A Interface ppp0 nao existe... > > Alguem me ajuda? > Obrigado > > -- Tiago B Peczenyj Linux User #405772 http://peczenyj.blogspot.com/ "what does not kill us makes us stronger"
Re: [shell-script] Ler Linhas do Arquivo
IMHO vc deveria fazer este loop em awk $ cat data 10393039374943 030490 303202 39302 30484030393903 403032 223212 33201 3038947738383 303844 423434 44343 43434343434344 434343 434344 32323 30484030393903 403032 223212 33201 10393039374943 030490 303202 39302 $ awk 'NR % 2 ==1{ var[1] = $NF ; next } { var[2]=$NF ; print "var[1]=",var[1], ", var[2]=",var[2] }' data var[1]= 39302 , var[2]= 33201 var[1]= 44343 , var[2]= 32323 var[1]= 33201 , var[2]= 39302 []´s T On 11/7/07, Eduardo Lucas <[EMAIL PROTECTED]> wrote: > > Gurizada! > ..tenho um arquivo texto..com o formato abaixo..: > > 10393039374943 030490 303202 39302 > 30484030393903 403032 223212 33201 > 3038947738383 303844 423434 44343 > 43434343434344 434343 434344 32323 > 30484030393903 403032 223212 33201 > 10393039374943 030490 303202 39302 > > preciso fazer um for... que leia linha por linha deste arquivo > preciso que a cada laço do for, tenha a seguinte saida > > var1= 39302 <- ultima coluna da primeira linha > var2= 33201<- ultima coluna da segunda linha > > no proximo laço seria..: > > var1= 44343 <- ultima coluna da terceira linha > var2= 32323 <- ultima coluna da quarta linha > > alguma ideia... > > -- Tiago B Peczenyj Linux User #405772 http://peczenyj.blogspot.com/ "what does not kill us makes us stronger" [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Ler Linhas do Arquivo
Supondo que esta sequência está em um arquivo teste.txt. Usando: cat teste.txt | awk '{print $4}' Você terá o resultado que você quer. Agora se você precisa pegar os resultados de saída 2 a 2, então você pode colocar um if no script awk para fazer o mapeamento desejado. On Nov 7, 2007 5:14 PM, Eduardo Lucas <[EMAIL PROTECTED]> wrote: > > > > > Gurizada! > ..tenho um arquivo texto..com o formato abaixo..: > > 10393039374943 030490 303202 39302 > 30484030393903 403032 223212 33201 > 3038947738383 303844 423434 44343 > 43434343434344 434343 434344 32323 > 30484030393903 403032 223212 33201 > 10393039374943 030490 303202 39302 > > preciso fazer um for... que leia linha por linha deste arquivo > preciso que a cada laço do for, tenha a seguinte saida > > var1= 39302 <- ultima coluna da primeira linha > var2= 33201<- ultima coluna da segunda linha > > no proximo laço seria..: > > var1= 44343 <- ultima coluna da terceira linha > var2= 32323 <- ultima coluna da quarta linha > > alguma ideia... >
Re: [shell-script] Ler Linhas do Arquivo
se o for lerá linha por linha após ler a primeira linha , ou seja , no primeiro laço ainda não terá informação da segunda linha . Não é meio impossível isso , não ? A não ser que possa ler de duas em duas linhas ... On Wed, 2007-11-07 at 15:14 -0400, Eduardo Lucas wrote: > Gurizada! > ..tenho um arquivo texto..com o formato abaixo..: > > 10393039374943 030490 303202 39302 > 30484030393903 403032 223212 33201 > 3038947738383 303844 423434 44343 > 43434343434344 434343 434344 32323 > 30484030393903 403032 223212 33201 > 10393039374943 030490 303202 39302 > > preciso fazer um for... que leia linha por linha deste arquivo > preciso que a cada laço do for, tenha a seguinte saida > > var1= 39302 <- ultima coluna da primeira linha > var2= 33201<- ultima coluna da segunda linha > > no proximo laço seria..: > > var1= 44343 <- ultima coluna da terceira linha > var2= 32323 <- ultima coluna da quarta linha > > alguma ideia... > > > > - Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. - Sair da lista: [EMAIL PROTECTED] - Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net - Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [shell-script] Re: Redirecionar erro na tela
faz: ifconfig ppp0 >/dev/null 2>&1 && echo existe ppp0 || echo nao existe ppp0 Flavio do Carmo Junior On Nov 7, 2007 2:45 PM, bossonaroesao06 <[EMAIL PROTECTED]> wrote: > > > > > > > Ops.. > Nao deu nao... > Quando eu redireciono a saida dessa forma, ele nao coloca o valor > dentro da variavel. Entao sempre que eu for testar a variavel ela vai > estar vazia ja que a saida do ifconfig foi redirecionada. > > Alguem pode ajudar a resolver isso?? > Obrigado > >
[shell-script] Redirecionar erro na tela
Pessoal, Estou tentando verificar a existência da conexão ppp0 através do ifconfig e até funnciona certinho. O problema é que quando não existe a ppp0 ele mostra esse erro no meio do script. Tem como tirar isso? Script: #!/bin/bash echo "Verificando a interface ppp0..." placappp=$(ifconfig ppp0 | grep "ppp0: erro") if [ -z "$placappp" ]; then echo "A Interface ppp0 nao existe..." else echo "A Interface ppp0 existe..." fi Olhem o resultado quando nao existe a ppp0: #Verificando a interface ppp0... #ppp0: erro obtendo informaçoes da interface: %s: dispositivo nao encontrado #A Interface ppp0 nao existe... Eu gostaria que ficasse assim: #Verificando a interface ppp0... #A Interface ppp0 nao existe... Alguem me ajuda? Obrigado
Re: [shell-script] Redirecionar erro na tela
So um parenteses.. teste=$(ifconfig ppp0) não vai te retornar, na variavel teste, o codigo de saida do comando. Na verdade, se ppp0 nao existir é vazio, se não é a linha do ifconfig Veja: lazlo:~# TESTE=$(ifconfig nada) nada: error fetching interface information: Device not found lazlo:~# echo $TESTE lazlo:~# TESTE=$(ifconfig eth0) lazlo:~# echo $TESTE eth0 Link encap:Ethernet HWaddr 00:11:25:A4:7A:68 inet addr:192.168.4.4 Bcast:192.168.4.255 Mask:255.255.255.0 inet6 addr: fe80::211:25ff:fea4:7a68/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:429567781 errors:0 dropped:0 overruns:0 frame:0 TX packets:563296397 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:154435067752 (143.8 GiB) TX bytes:560701904150 (522.1 GiB) Interrupt:169 lazlo:~# lazlo:~# ifconfig nada nada: error fetching interface information: Device not found lazlo:~# TESTE=$? lazlo:~# echo $TESTE 1 lazlo:~# Espero ter explicado... Flávio do Carmo Junior On Nov 7, 2007 1:05 PM, mups. cp <[EMAIL PROTECTED]> wrote: > > > > > > > Ao invés de fazer grep direto na saída de ifconfig ppp0, você pode > verificar a resposta do comando primeiro detectando se a interface > existe. > Se a interface existe teste=$(ifconfig ppp0), a variável $teste terá o > valor 0 caso não exista terá o valor 1. Assim fica mais fácil de fazer > o tratamento. Ou algo assim; > > ifconfig ppp0 > /dev/null 2>&1 && echo "interface existe" || echo > "interface não existe" > > On Nov 7, 2007 12:45 PM, bossonaroesao06 <[EMAIL PROTECTED]> > wrote: > > > > > > > > > > Pessoal, > > Estou tentando verificar a existência da conexão ppp0 através do > > ifconfig e até funnciona certinho. O problema é que quando não > > existe a ppp0 ele mostra esse erro no meio do script. Tem como tirar > > isso? > > > > Script: > > #!/bin/bash > > echo "Verificando a interface ppp0..." > > placappp=$(ifconfig ppp0 | grep "ppp0: erro") > > if [ -z "$placappp" ]; then > > echo "A Interface ppp0 nao existe..." > > else > > echo "A Interface ppp0 existe..." > > fi > > > > Olhem o resultado quando nao existe a ppp0: > > > > #Verificando a interface ppp0... > > #ppp0: erro obtendo informaçoes da interface: %s: dispositivo nao > > encontrado > > #A Interface ppp0 nao existe... > > > > Eu gostaria que ficasse assim: > > > > #Verificando a interface ppp0... > > #A Interface ppp0 nao existe... > > > > Alguem me ajuda? > > Obrigado > > > > > > >
Re: [shell-script] Redirecionar erro na tela
Ao invés de fazer grep direto na saída de ifconfig ppp0, você pode verificar a resposta do comando primeiro detectando se a interface existe. Se a interface existe teste=$(ifconfig ppp0), a variável $teste terá o valor 0 caso não exista terá o valor 1. Assim fica mais fácil de fazer o tratamento. Ou algo assim; ifconfig ppp0 > /dev/null 2>&1 && echo "interface existe" || echo "interface não existe" On Nov 7, 2007 12:45 PM, bossonaroesao06 <[EMAIL PROTECTED]> wrote: > > > > > Pessoal, > Estou tentando verificar a existência da conexão ppp0 através do > ifconfig e até funnciona certinho. O problema é que quando não > existe a ppp0 ele mostra esse erro no meio do script. Tem como tirar > isso? > > Script: > #!/bin/bash > echo "Verificando a interface ppp0..." > placappp=$(ifconfig ppp0 | grep "ppp0: erro") > if [ -z "$placappp" ]; then > echo "A Interface ppp0 nao existe..." > else > echo "A Interface ppp0 existe..." > fi > > Olhem o resultado quando nao existe a ppp0: > > #Verificando a interface ppp0... > #ppp0: erro obtendo informaçoes da interface: %s: dispositivo nao > encontrado > #A Interface ppp0 nao existe... > > Eu gostaria que ficasse assim: > > #Verificando a interface ppp0... > #A Interface ppp0 nao existe... > > Alguem me ajuda? > Obrigado > >
Re: [shell-script] Re: Redirecionar erro na tela
Desta forma funciona: teste=$(ifconfig ppp0 > /dev/null 2>&1 && echo 1 || echo 0) $teste será 1 caso exista a interface e 0 caso contrário. On Nov 7, 2007 2:45 PM, bossonaroesao06 <[EMAIL PROTECTED]> wrote: > > > > > Ops.. > Nao deu nao... > Quando eu redireciono a saida dessa forma, ele nao coloca o valor > dentro da variavel. Entao sempre que eu for testar a variavel ela vai > estar vazia ja que a saida do ifconfig foi redirecionada. > > Alguem pode ajudar a resolver isso?? > Obrigado > >
Re: [shell-script] Telnet com Sqlplus
Edjunior, acertou de novo, estou postando os dois scripts para que fique no histórico da lista a solução. Pessoal obrigado a todos em especial ao Thiago e Edjunior. []s Carlos Ferreira meusqlplus.sh #!/bin/bash # Programa para conectar e abrir sqlplus # Autor: Carlos Ferreira # Data: 07/11/2007 # Versão 1.0 # Agradecimentos # Tiago Barcellos Peczenyj e # Edjunior Machado # INICIAR VARIAVEIS ## vl_arqconf=tnsnames.txt vl_banco=`tr 'A-Z' 'a-z' <<< $1` # FUNÇÔES # INICIAR PROGRAMA ### vl_ip=`cat ${vl_arqconf} | grep -i ${vl_banco} | cut -f2 -d\;` vl_usuario=`cat ${vl_arqconf} | grep -i ${vl_banco} | cut -f3 -d\;` vl_senha=`cat ${vl_arqconf} | grep -i ${vl_banco} | cut -f4 -d\;` ./conexao ${vl_ip} ${vl_usuario} ${vl_senha} "ORACLE_SID=${vl_banco}a" ## fim ### conexão #!/usr/bin/expect # Autor: Carlos Ferreira # Data: 07/11/2007 # Versão 1.0 # Agradecimentos # Tiago Barcellos Peczenyj e # Edjunior Machado set timeout 20 set ip [lindex $argv 0] set user [lindex $argv 1] set password [lindex $argv 2] set oracmd [lindex $argv 3] spawn telnet $ip expect "login:" send "$user\r" expect "password" send "$password\r" send "$oracmd\r" send "sqlplus /\r" interact ## fim # Em 07/11/07, Edjunior Machado <[EMAIL PROTECTED]> escreveu: > > Hey Sr. Carlos, > > > pelo log que você passou, parece que o seu script principal está > passando os parâmetros de forma errônea para o script expect: > > > login: usuariosenhaORACLE_SID=sid_do_bancoasqlplus //dev/pts/3: 3004-038 > > Por acaso, os dados na frente de "login: " não seriam exatamente o que > você estava passando como parâmetro, porém concatenados? > Bem, em primeiro lugar, eu tentaria executar o script expect > manualmente, garantindo que o mesmo está correto. Em seguida, > verificaria como ele está sendo chamado pelo script principal. > > Aproveitando, uma dica (na verdade não tenho certeza se é necessário; > apesar de cair mais no expect, talvez fugindo de escopo, alguém da > poderia corrigir caso esteja incorreto): nos comandos de "send" do > expect, acredito que você precisa enviar também o '\r', simulando o > seu "Enter" após preenchimento do campo, como em: > > > send "$user\r" > > Hasta! > > jr. > > > On Nov 7, 2007 9:14 AM, Carlos Ferreira <[EMAIL > PROTECTED]> > wrote: > > Edjunior, > > realmente o erro era o comentário na mesma linha, obrigado pela ajuda, > mas > > agora estou chegando até o login no telnet e a senha não é passada, fica > > esperando a senha até que ele escreve todos os outros comandos na mesma > > linha e cai. > > o erro: > > AIX Version 5 > > (C) Copyrights by IBM and by others 1982, 2007. > > login: usuariosenhaORACLE_SID=sid_do_bancoasqlplus //dev/pts/3: 3004-038 > > Login timed out after 60 seconds. > > > > Connection closed by foreign host > > > > []s > > > > Carlos Ferreira > > > > Em 07/11/07, Edjunior Machado <[EMAIL PROTECTED] > > escreveu: > > > > > > Hey Sr. Carlos, > > > > > > apesar de não ter muito know-how no assunto, creio que esse é um > > > problema no seu script em expect. Procure eliminar os comentários de > > > final de linha (as frases após '#') ou deixá-los em uma linha sem > > > código. Por exemplo, tente substituir: > > > > > > set ip [lindex $argv 0] # primeiro argumento > > > set user [lindex $argv 1] # segundo... etc > > > > > > por > > > > > > # primeiro argumento > > > set ip [lindex $argv 0] > > > # segundo... etc > > > set user [lindex $argv 1] > > > > > > Espero ter ajudado. > > > Hasta! > > > > > > jr. > > > > > > > > > On Nov 7, 2007 8:15 AM, Carlos Ferreira <[EMAIL > > > PROTECTED] > > > > > > > wrote: > > > > Tiago, > > > > primeiramente obrigado pela ajuda, mas estou recebendo o seguinte > erro: > > > > wrong # args: should be "set varName ?newValue? > > > > while executing > > > > "set ip [lindex $argv 0] # primeiro argumento" > > > > (file "./conexao" line 4) > > > > > > > > Meu código: > > > > #!/bin/bash > > > > # Programa para conectar e abrir sqlplus > > > > # > > > > > > > > # INICIAR VARIAVEIS ## > > > > vl_arqconf=tnsnames.txt > > > > vl_banco=`tr 'A-Z' 'a-z' <<< $1` > > > > # FUNÇÔES > > > > > > > > > > > > # INICIAR PROGRAMA ### > > > > > > > > vl_ip=`cat $vl_arqconf | grep -i $vl_banco | cut -f2 -d\;` > > > > echo $vl_ip > > > > ./conexao ${vl_ip} USUARIO SENHA "ORACLE_SID=${vl_banco}a" > > > > > > > > ## FIM DO PROGRAMA ### > > > > > > > > #!/usr/bin/expect > > > > set timeout 20 > > > > > > > > set ip [lindex $argv 0] # primeiro argumento > > > > set user [lindex $argv 1] # segundo... etc > > > > set password [lindex $argv 2] > > > > set oracmd [lindex $argv 3] > > > > > > > > spawn telnet $ip # aqui ele 'pega' o telnet > > > > > > > > expect "login:" # aha, pediu o login? > > > > send "$user " # toma o username do cara! > > > > > > > > expect "password
Re: [shell-script] Telnet com Sqlplus
Hey Sr. Carlos, pelo log que você passou, parece que o seu script principal está passando os parâmetros de forma errônea para o script expect: > login: usuariosenhaORACLE_SID=sid_do_bancoasqlplus //dev/pts/3: 3004-038 Por acaso, os dados na frente de "login: " não seriam exatamente o que você estava passando como parâmetro, porém concatenados? Bem, em primeiro lugar, eu tentaria executar o script expect manualmente, garantindo que o mesmo está correto. Em seguida, verificaria como ele está sendo chamado pelo script principal. Aproveitando, uma dica (na verdade não tenho certeza se é necessário; apesar de cair mais no expect, talvez fugindo de escopo, alguém da poderia corrigir caso esteja incorreto): nos comandos de "send" do expect, acredito que você precisa enviar também o '\r', simulando o seu "Enter" após preenchimento do campo, como em: > send "$user\r" Hasta! jr. On Nov 7, 2007 9:14 AM, Carlos Ferreira <[EMAIL PROTECTED]> wrote: > Edjunior, > realmente o erro era o comentário na mesma linha, obrigado pela ajuda, mas > agora estou chegando até o login no telnet e a senha não é passada, fica > esperando a senha até que ele escreve todos os outros comandos na mesma > linha e cai. > o erro: > AIX Version 5 > (C) Copyrights by IBM and by others 1982, 2007. > login: usuariosenhaORACLE_SID=sid_do_bancoasqlplus //dev/pts/3: 3004-038 > Login timed out after 60 seconds. > > Connection closed by foreign host > > []s > > Carlos Ferreira > > Em 07/11/07, Edjunior Machado <[EMAIL PROTECTED]> escreveu: > > > > Hey Sr. Carlos, > > > > apesar de não ter muito know-how no assunto, creio que esse é um > > problema no seu script em expect. Procure eliminar os comentários de > > final de linha (as frases após '#') ou deixá-los em uma linha sem > > código. Por exemplo, tente substituir: > > > > set ip [lindex $argv 0] # primeiro argumento > > set user [lindex $argv 1] # segundo... etc > > > > por > > > > # primeiro argumento > > set ip [lindex $argv 0] > > # segundo... etc > > set user [lindex $argv 1] > > > > Espero ter ajudado. > > Hasta! > > > > jr. > > > > > > On Nov 7, 2007 8:15 AM, Carlos Ferreira <[EMAIL > > PROTECTED]> > > > wrote: > > > Tiago, > > > primeiramente obrigado pela ajuda, mas estou recebendo o seguinte erro: > > > wrong # args: should be "set varName ?newValue? > > > while executing > > > "set ip [lindex $argv 0] # primeiro argumento" > > > (file "./conexao" line 4) > > > > > > Meu código: > > > #!/bin/bash > > > # Programa para conectar e abrir sqlplus > > > # > > > > > > # INICIAR VARIAVEIS ## > > > vl_arqconf=tnsnames.txt > > > vl_banco=`tr 'A-Z' 'a-z' <<< $1` > > > # FUNÇÔES > > > > > > > > > # INICIAR PROGRAMA ### > > > > > > vl_ip=`cat $vl_arqconf | grep -i $vl_banco | cut -f2 -d\;` > > > echo $vl_ip > > > ./conexao ${vl_ip} USUARIO SENHA "ORACLE_SID=${vl_banco}a" > > > > > > ## FIM DO PROGRAMA ### > > > > > > #!/usr/bin/expect > > > set timeout 20 > > > > > > set ip [lindex $argv 0] # primeiro argumento > > > set user [lindex $argv 1] # segundo... etc > > > set password [lindex $argv 2] > > > set oracmd [lindex $argv 3] > > > > > > spawn telnet $ip # aqui ele 'pega' o telnet > > > > > > expect "login:" # aha, pediu o login? > > > send "$user " # toma o username do cara! > > > > > > expect "password:" # mesma coisa. > > > send "$password " # facil não? > > > > > > send "$oracmd" # agora aquele toque final > > > send "sqlplus /" > > > > > > interact # E aqui devolve a interação para o usuario > > > > > > []s > > > > > > Carlos Ferreira > > > > > > Em 06/11/07, Tiago Barcellos Peczenyj <[EMAIL > > > PROTECTED]> > > > escreveu: > > > > > > > > use Expect: > > > > > > > > Inspirado aqui: > > > > http://www.osix.net/modules/article/?id=30 > > > > > > > > #!/bin/bash > > > > vl_arqconf=tnsnames.txt > > > > vl_banco=`tr 'A-Z' 'a-z' <<< $1` > > > > > > > > vl_ip=`grep -i $vl_banco $vl_arqconf | cut -f2 -d\;` > > > > > > > > ./conexao ${vl_ip} usuario senha "ORACLE_SID=${vl_banco}a" > > > > > > > > script 'conexao' abaixo: > > > > #!/usr/bin/expect > > > > set timeout 20 > > > > > > > > set ip [lindex $argv 0] # primeiro argumento > > > > set user [lindex $argv 1] # segundo... etc > > > > set password [lindex $argv 2] > > > > set oracmd [lindex $argv 3] > > > > > > > > spawn telnet $ip # aqui ele 'pega' o telnet > > > > > > > > expect "login:" # aha, pediu o login? > > > > send "$user " # toma o username do cara! > > > > > > > > expect "assword:" # mesma coisa. > > > > send "$password " # facil não? > > > > > > > > send "$oracmd" # agora aquele toque final > > > > send "sqlplus /" > > > > > > > > interact # E aqui devolve a interação para o usuario > > > > On Nov 6, 2007 5:19 PM, Carlos Ferreira <[EMAIL > > > > PROTECTED] > > > > > > > wrote: > > > > > > > > > > Pessoal > > > > > estou com o seguinte problema, fiz o script abaixo dentro de um > > script > > > > > shell: > > > > > #!/bin/bash > > >
[shell-script] Re: Redirecionar erro na tela
Ops.. Nao deu nao... Quando eu redireciono a saida dessa forma, ele nao coloca o valor dentro da variavel. Entao sempre que eu for testar a variavel ela vai estar vazia ja que a saida do ifconfig foi redirecionada. Alguem pode ajudar a resolver isso?? Obrigado
Re: [shell-script] Ler Linhas do Arquivo
On 11/7/07, Eduardo Lucas <[EMAIL PROTECTED]> wrote: > 10393039374943 030490 303202 39302 > 30484030393903 403032 223212 33201 > 3038947738383 303844 423434 44343 > 43434343434344 434343 43434432323 > 30484030393903 403032 223212 33201 > 10393039374943 030490 303202 39302 > > preciso fazer um for... que leia linha por linha deste arquivo > preciso que a cada laço do for, tenha a seguinte saida > > var1= 39302 <- ultima coluna da primeira linha > var2= 33201<- ultima coluna da segunda linha > > no proximo laço seria..: > > var1= 44343 <- ultima coluna da terceira linha > var2= 32323 <- ultima coluna da quarta linha Olá, Eduardo. Segue um exemplo com base em seu trecho de arquivo e considerando que o separador entre os campos é um espaço: #!/bin/bash IFS=" " i=1 while read campo1 campo2 campo3 campo4; do eval var${i}=${campo4} let i++ done < teste.txt A idéia está dada. É só questão de adaptar agora. :) [] Gentil.
[shell-script] Re: Redirecionar erro na tela
Outro dia precisei achar o primeiro canal disponível em uma hierarquia que defini. Não lembro bem do código, mas lá tinha algo parecido com: ifconfig|grep -m1 -A1 ^ppp|tail -n1|tr -s ' ' :|cut -d: -f4 que definiria, com porta e ip, uma ação sobre o firewall de um portátil. Parece que você não quer o ip, nem testar se existe rota ou resolução de nomes, então acho que poderia simplificar para: ifconfig|grep -q -m1 ^ppp&&echo está OK >&2 O que acho que não seria legal é chamar novamente o ifconfig em seguida para pegar algo que poderia ter sido obtido em um único porcesso. Desculpe se perdi algo na thread, li rapidamente. Naquilo que fiz talvez tivesse todos esses pipes, pois costumo tratar variáveis em shell, uma vez que elas chegam a uma única linha. Assim, de improviso, mandei o ip pelos tubos mesmo. :) Como li algo sobre saída em stderr também, veja se não quer algo como ifconfig ^pp 2>/dev/null -- >From: "bossonaroesao06" >Date: Wed, 07 Nov 2007 16:45:19 - > >Ops.. >Nao deu nao... >Quando eu redireciono a saida dessa forma, ele nao coloca o valor >dentro da variavel. Entao sempre que eu for testar a variavel ela vai >estar vazia ja que a saida do ifconfig foi redirecionada. > >Alguem pode ajudar a resolver isso?? >Obrigado - Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. - Sair da lista: [EMAIL PROTECTED] - Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net - Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [shell-script] Variaveis Variaveis ${${var}}
Opa Tiago, não uso esse shell, mas ao velho estilo São Tomé resolvi ver o que a versão pré-jurássica que tenho aqui faria. [EMAIL PROTECTED]/tmp$ ksh [033]0;[EMAIL PROTECTED]:[EMAIL PROTECTED] PS1=??$PWD/?? ??/tmp/??A="alguma mensagem" ??/tmp/??B=A ??/tmp/??eval echo \$$B alguma mensagem ??/tmp/??$0 --version version sh (AT&T Labs Research) 1993-12-28 o+ ??/tmp/??ls -l $0 ls: cannot access ksh: No such file or directory ??/tmp/??ls -l `which $0` -rwxr-xr-x 1 root bin 865756 2004-02-15 05:58 /bin/ksh ??/tmp/??exit [EMAIL PROTECTED]/tmp$ Como não uso esse shell, apenas acabei de checar o slack current. =ksh93-2007_03_28-i486-2 in slackware/ap Meu ksh :) está atualizado! Não sei se este relato acrescenta algo, mas detalhei como pude. -- >From: "Tiago Barcellos Peczenyj" >Date: Wed, 7 Nov 2007 17:45:00 -0200 > >Imaginemos duas variaveis: > >A="alguma mensagem" >B=A > >É facil acessar o conteúdo de cada uma delas: > >$ echo $A >alguma mensagem > >$ echo $B >A > >Agora, e se eu quisesse acessar o valor de uma variavel através do >conteúdo de outra? > >variavel B tem o conteudo A. >variavel A, por sua vez, tem outro conteudo. > >Eu poderia utilizar eval pra conseguir esse comportamento > >$ eval echo \$$B >alguma mensagem > >ou então utilizar a expansão ${!Variavel} > >$ echo ${!B} >alguma mensagem > >Funciona no Bash e deveria funcionar o Ksh (ai deveria entrar um tal >de nameref pra ajudar mas não consegui implementar). > >fica a dica. >-- >Tiago B Peczenyj >Linux User #405772 > >http://peczenyj.blogspot.com/ >"what does not kill us makes us stronger" - Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. - Sair da lista: [EMAIL PROTECTED] - Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net - Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [shell-script] Variaveis Variaveis ${${var}}
Minha resposta anterior estava parcialmente incorreta. O repósitorio local está atualizado, mas o pacote instalado não era o último. Deve ser um bem antigo, nem esta na lista de pacotes instalados. Como disse eu não o uso, scripts configure ou make, sei lá... Bem, descompactei o último no diretório abaixo e rodei desse ponto, sem instalar, é só um tar x... :) [EMAIL PROTECTED]/tmp/test$ ls -l total 12 drwxr-xr-x 2 web ppp 4096 2007-04-15 20:32 bin/ drwxr-xr-x 2 web ppp 4096 2007-04-15 20:32 install/ drwxr-xr-x 5 web ppp 4096 2007-04-15 20:32 usr/ [EMAIL PROTECTED]/tmp/test$ ls -ld bin/* -rwxr-xr-x 1 web ppp 977876 2007-04-15 20:32 bin/ksh.new* [EMAIL PROTECTED]/tmp/test$ md5sum bin/* 8caae608a57ccff2dcea53946c8518ca bin/ksh.new [EMAIL PROTECTED]/tmp/test$ bin/* [033]0;[EMAIL PROTECTED]:[EMAIL PROTECTED] PS1=':) ' :) A="alguma mensagem" :) B=A :) eval echo \$$B alguma mensagem :) echo $0 bin/ksh.new :) echo $PWD /tmp/test :) $0 --version version sh (AT&T Research) 1993-12-28 s+ :) exit [EMAIL PROTECTED]/tmp/test$ --- Desculpem a ~dupla postagem, mas tinha de reparar a minha falha! - Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. - Sair da lista: [EMAIL PROTECTED] - Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net - Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html