Verifique se uma máquina remota está escutando em alguma porta específica, em um sistema * nix

Quando trabalho em um ambiente distribuído, sempre costumo configurar algumas caixas para se comunicarem usando alguma camada de transporte (TCP ou UDP). Portanto, sempre houve a necessidade de verificar se esta ou aquela porta está aberta em alguma máquina , e como o pingcomando nada mais é do que uma Solicitação de eco em algum endereço IP, tive que procurar por uma solução simples, mas eficiente, e finalmente cruzei uma.

Compartilho aqui o script que faz a verificação usando a nc( ferramenta netcat ), então você tem que ter certeza de que já está instalado na sua máquina.

Como:

Quando tiver certeza de que o netcat está pronto para uso, crie um script bash com código sublinhado (usando seu editor de texto favorito ou seguindo as instruções de linha de comando que irei usar agora):

  • Crie um script bash com o nome check_port.sh :

    touch check_port.sh
  • Edite o script:

    vim check_port.sh
  • Em seguida, copie / cole as linhas abaixo em:

    #!/bin/bash
    # portcheck tool

    usage
    ()
    {
    echo
    -e "n USAGE: ./${0##*/} [host|ip] [port] n"
    exit
    }

    check_port
    ()
    {
    local host=${1}
    local port=${2}
    if nc -w 5 -z ${host-ip} ${port} 2>/dev/null
    then
    echo
    -e "an => Port ${port} at ${host} is open"
    else
    echo
    -e "an => Port ${port} at ${host} is closed"
    fi
    }

    [[ $# -ne 2 ]] && usage

    check_port $
    {1} ${2}
  • Torne o script executável:

    chmod +x check_port.sh

Uso:

O script é tão simples quanto pode ser e você pode usá-lo apenas emitindo o nome do script (em seu caminho de diretório) seguido por um endereço IP e uma porta que você deseja verificar, por exemplo:

cd /path/to/check_port.sh
sh check_port
.sh google.com 80
=> Port 80 at google.com.br is open

sh check_port
.sh wisebrains.org 8080
=> Port 8080 at wisebrains.org is closed

Observação : você pode criar um link para o arquivo de script no diretório / usr / bin para que esteja disponível na variável PATH env e você pode usá-lo como um comando:

cd /usr/bin
sudo ln
-s /path/to/check_port.sh portcheck

Agora você pode simplesmente usar o portcheckcomando de qualquer caminho:

portcheck google.com 80
=> Port 80 at google.com.br is open

Fonte: Blog do servidor virtual