Expect - Condição IF [RESOLVIDO]

1. Expect - Condição IF [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 06/02/2012 - 11:04h

Saudações a todos,

Estou fazendo uma função em expect para executar um telnet em vários elementos. O script será chamado várias vezes para diferentes comandos, porém, com 1 comando específico, eu gostaria de fazer um tratamento diferente. Para isso, eu precisaria de uma condição IF no expect comparando o comando levado para dentro do código com um texto em si. Já pesquisei diversas formas, mas nenhuma delas está funcionando. Segue abaixo o que está dando erro:

if { $Comando_Nome == "SYRIP:LOG" } {

Alguém tem alguma sugestão?? Acho que é um erro [*****] que eu não estou conseguindo ver, mas qualquer ajuda é válida. Segue abaixo o script completo.

#!/usr/bin/expect -f

set timeout 60
# timeout da função do expect

set OSS_Nome [lindex $argv 0]
# Nome da OSS
set OSS_IP [lindex $argv 1]
# IP da OSS
set OSS_Porta [lindex $argv 2]
# Porta de acesso da OSS
set OSS_User [lindex $argv 3]
# Usuário que será logado na OSS
set OSS_Pass [lindex $argv 4]
# Senha do usuário que será logado na OSS
set MSC_HLR_Nome [lindex $argv 5]
# MSC/HLR onde serão executados os comandos
set Comando_Nome [lindex $argv 6]
# Comando a ser executado no elemento da OSS (comando completo)

spawn telnet $OSS_IP $OSS_Porta
# Executa o telnet para acessar a OSS através do IP e porta indicados

expect "Userid:$" {
# Espera o texto Userid:
# As chaves no final da linha é para caso a OSS estiver offline

send "$OSS_User\n"
# Envia o nome do usuário para logar na OSS
expect "Password:$"
# Espera o texto Password:"
send "$OSS_Pass\n"
# Envia a senha do usuário para logar na OSS
expect "NE:$"
# Espera o texto NE:
send "NE=$MSC_HLR_Nome\n"
# Envia o nome do elemento para entrarmos nele e executar o comando
expect "<"
# Espera o prompt para enviar o comando desejado
send "$Comando_Nome;\n"
# Envia o nome do comando desejado

# if { $Comando_Nome == "SYRIP:LOG" } {
# expect "<"
send -- \x4
# Envia o comando "Ctrl+D" em hexadecimal para a MSC
expect "SUMMARY VIEW OF EVENTS FOR THE LAST 12 MONTHS"
# A informação desse texto não é importante
exit 0
# Retorna 0 para a variável $? no script pai indicando que o script teve sucesso
# expect eof
# } else {
expect "<"
# Espera o final do comando e o novo prompt
send "QUIT;\n"
# Encerra a conexão com o OSS
expect "Connection"
# Espera a resposta do encerramento da conexão
exit 0
expect eof
# }

} "Unable to connect to remote host" {
exit 1
# Retorna 1 para a variável $? no script pai indicando que o script não teve sucesso
expect eof
}
# Encerra o expect


  


2. Re: Expect - Condição IF [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 06/02/2012 - 11:36h

Para a estrutura do if vc pode usar desta forma:


if [ "$VAR" == "BLABLABLA" ]; then

echo "Comandos..."

else

echo "Outros comandos..."

fi



Coloque aspas duplas nas 2 strings que fazem comparação no seu if!


3. Re: Expect - Condição IF [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 07/02/2012 - 11:44h

Ñ falei q era uma coisa [*****]?!?!?! rs

Valeu pela ajuda!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts