Re: [shell-script] Telnet com Sqlplus

2007-11-07 Por tôpico Carlos Ferreira
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

2007-11-07 Por tôpico Edjunior Machado
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

2007-11-07 Por tôpico Carlos Ferreira
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

2007-11-07 Por tôpico Eduardo Lucas
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

2007-11-07 Por tôpico mups . cp
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

2007-11-07 Por tôpico Flavio Junior
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

2007-11-07 Por tôpico miranda
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

2007-11-07 Por tôpico Welder Kopti
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

2007-11-07 Por tôpico bossonaroesao06
Deu certo
Obrigado



Re: [shell-script] Redirecionar erro na tela

2007-11-07 Por tôpico Tiago Barcellos Peczenyj
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

2007-11-07 Por tôpico Tiago Barcellos Peczenyj
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

2007-11-07 Por tôpico mups . cp
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

2007-11-07 Por tôpico miranda
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

2007-11-07 Por tôpico Flavio Junior
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

2007-11-07 Por tôpico bossonaroesao06
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

2007-11-07 Por tôpico Flavio Junior
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

2007-11-07 Por tôpico mups . cp
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

2007-11-07 Por tôpico mups . cp
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

2007-11-07 Por tôpico Carlos Ferreira
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

2007-11-07 Por tôpico Edjunior Machado
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

2007-11-07 Por tôpico bossonaroesao06
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

2007-11-07 Por tôpico Gentil de Bortoli Jr
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

2007-11-07 Por tôpico mop
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}}

2007-11-07 Por tôpico mop
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}}

2007-11-07 Por tôpico mop
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