Logo Hardware.com.br
Caspper
Caspper Super Participante Registrado
865 Mensagens 3 Curtidas

Verificar conectividade com IP e Porta

#1 Por Caspper 07/10/2008 - 16:29
Pessoal,

Eu estou fazendo um shell para instalação do opsware e eu preciso fazer uma checagem se o gateway está respondendo, se o gateway tiver OK ele instala senão ele dá uma mensagem de erro. Para verificar a conectividade eu preciso de um comando para que quando eu passe o IP e a porta neste formato: 141.122.63.10:3001 ele avise se está ok ou não.
Alguém sabe o que eu posso usar? No momento estou fazendo os testes no SLES 10.2


Muito obrigado
Responder
Caspper
Caspper Super Participante Registrado
865 Mensagens 3 Curtidas
#3 Por Caspper
07/10/2008 - 18:00
jqueiroz disse:
telnet ip porta

p.ex: telnet 192.168.1.1 25 -> tenta conectar na porta 25 (SMTP).


Opa Jqueiroz já tentei o telnet porém quando está ok ele pede usuário e senha e deixa o script preso, eu preciso só saber o resultado se está ok ou não, tipo o ping.
A não ser que tenha uma função do telnet que só teste e não conecte...
Regards,
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#4 Por jqueiroz
07/10/2008 - 18:32
Se ele chega a pedir usuário é pq conectou [sinal, aliás, que vc está conectando no serviço telnet --- vc tem que especificar a porta que quer conectar!!!].

Uma vez conectado, use "CTRL-Ç" ou "CTRL-]" para voltar ao prompt "telnet>", daí é só digitar "quit" para encerrar a conexão...
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
Caspper
Caspper Super Participante Registrado
865 Mensagens 3 Curtidas
#5 Por Caspper
07/10/2008 - 22:15
jqueiroz disse:
Se ele chega a pedir usuário é pq conectou [sinal, aliás, que vc está conectando no serviço telnet --- vc tem que especificar a porta que quer conectar!!!].

Uma vez conectado, use "CTRL-Ç" ou "CTRL-]" para voltar ao prompt "telnet>", daí é só digitar "quit" para encerrar a conexão...


Sim, mas vc tem idéia de como eu posso colocar isso no shell script, a instalação do opsware é toda em modo silent, sem nenhuma interação do usuário.
Qual eu dou o telnet e está OK, como eu vou conseguir o código de retorno $? = 0, se eu vou estar na modo login do telnet?
Eu não preciso conectar só preciso testar de esta OK, se sim cai no if para continuar a instalação do opsware senão ele para a instalação.
Regards,
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#6 Por jqueiroz
08/10/2008 - 01:16
Ah, você está fazendo isso em programação??? Pq não escreve um programa em Perl ou outra linguagem de programação que domine?

É só mandar abrir um socket para o destino/porta desejado, caso a operação tenha sucesso você fecha o socket e termina o programa com código de retorno zero, ou -1 caso contrário...
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
Caspper
Caspper Super Participante Registrado
865 Mensagens 3 Curtidas
#7 Por Caspper
08/10/2008 - 09:39
jqueiroz disse:
Ah, você está fazendo isso em programação??? Pq não escreve um programa em Perl ou outra linguagem de programação que domine?

É só mandar abrir um socket para o destino/porta desejado, caso a operação tenha sucesso você fecha o socket e termina o programa com código de retorno zero, ou -1 caso contrário...


Valeu Jqueiroz... o problema é que eu preciso seguir um padrão de framework, preciso fazer em shell script... para ser mais exato em ksh.
Regards,
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#8 Por jqueiroz
08/10/2008 - 14:28
Bom, você pode contornar isso usando expect.

O que vai te obrigar a instalar um pacote, criar o script expect, testar, etc.

Ou pode criar um script perl de 4 ou 5 linhas que pode até ficar embutido no seu código shell... algo como:


#!/bin/bash
# testa uma conexão tcp
addr=141.122.63.10
port=3001

perl <<PERL
use Socket;
socket(SOCK,PF_INET,SOCK_STREAM,getprotobyname('tcp'));
\$sin = sockaddr_in($port, inet_aton("$addr&quot);

if( connect(SOCK,\$sin) ) {
close(SOCK);
exit 0;
} else {
exit -1;
}
PERL

if [ $? == 0 ] ; then
echo funcionou
else
echo falhou
fi
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
Caspper
Caspper Super Participante Registrado
865 Mensagens 3 Curtidas
#9 Por Caspper
08/10/2008 - 16:29
jqueiroz disse:
Bom, você pode contornar isso usando expect.

O que vai te obrigar a instalar um pacote, criar o script expect, testar, etc.

Ou pode criar um script perl de 4 ou 5 linhas que pode até ficar embutido no seu código shell... algo como:


#!/bin/bash
# testa uma conexão tcp
addr=141.122.63.10
port=3001

perl <<PERL
use Socket;
socket(SOCK,PF_INET,SOCK_STREAM,getprotobyname('tcp'));
\$sin = sockaddr_in($port, inet_aton("$addr&quot);

if( connect(SOCK,\$sin) ) {
close(SOCK);
exit 0;
} else {
exit -1;
}
PERL

if [ $? == 0 ] ; then
echo funcionou
else
echo falhou
fi


Ah agora sim, acho que desse jeito vai.
Muito obrigado isso_ai.png
Regards,
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal