Você está precisando testar a conectividade de um servidor ou contêiner com algum outro host e porta, mas não tem o comando `telnet` e nenhum outro comando alternativo que faça a mesma função neste?
Não precisa se desesperar, pequeno mafagalfo, se o servidor ou contêiner tem o shell Bash, ainda é possível testar a conectividade com outro host e porta.
É só usar essa funcionalidade “secreta” do Bash:
timeout 1 bash -c 'cat < /dev/tcp/google.com/80' && echo "Porta aberta" || echo "Porta fechada"google.com e a porta 80 foram só um exemplo, você deve colocar o host e a porta que você gostaria de testar a conexão no servidor ou contêiner de origem.
Mas porque isso funciona?
Quando o Bash vê um redirecionamento apontando para um caminho que começa com /dev/tcp/HOST/PORT, ele intercepta essa chamada antes de passá-la para o sistema operacional. Em vez de tentar abrir um arquivo físico, o Bash faz o seguinte:
- Extrai o Hostname/IP e a Porta do caminho.
- Utiliza funções de rede padrão da biblioteca C (como
socket(),connect()) para estabelecer uma conexão TCP real. - Cria um descritor de arquivo que o shell pode usar para ler e gravar dados nessa conexão
Se o comando falhar mesmo estando com a sintaxe correta, é porque provavelmente o Bash foi compilado com a opção --disable-net-redirections, aí infelizmente não vai ser possível fazer o teste
Isso só é possível de ser feito no Bash, então se você tentar fazer em outro shell isso não vai funcionar.
E é isso pessoal, hoje aprendemos que um bom shell pode fazer sua vida mais fácil.