Eu preciso de uma linha de comando que possa verificar o status da porta em um host remoto. Eu tentei, ping xxx.xxx.xxx.xxx:161
mas ele não reconhece o "host". Eu pensei que era uma resposta "boa" até que fiz o mesmo comando contra um host que eu sei que tem essa porta aberta. Isso é para um arquivo em lotes no Windows que verificará o status da porta remota e executará um comando que usa essa porta remota para obter informações, depois o comando remote port check novamente e, em seguida, o comando que usa essa porta no próximo servidor para obter informações. , e assim por diante. Eu olhei em todos os lugares e pensei que o ping pudesse fazer isso, mas deve haver várias versões do ping, suponho que o servidor em que estou fazendo isso não mostre essa opção.
Apenas para rir, tentei um verificador de porta remota baseado na Web a partir de um site - e os resultados estavam corretos para o servidor "problemático" e o servidor correto. No entanto, não posso usá-lo em lotes executados com mais de 500 IPs de servidor.
Existe algo que eu possa fazer que seja simples? Minhas habilidades em Perl são extremamente enferrujadas (use ou perca), não conheço outros idiomas baseados no Windows, exceto lote. Unix é minha habilidade, mas isso deve ser executado no Widows Server 2003.
fonte
ps> tnc xxx.xxx.xxx.xxx -port 161
Respostas:
Parece que você está procurando um scanner de porta como o nmap ou o netcat , ambos disponíveis para Windows, Linux e Mac OS X.
Por exemplo, verifique se há telnet em um ip conhecido:
Por exemplo, procure portas abertas de 20 a 30 em host.example.com:
fonte
nc -zv host.example.com 20-30
. caso contrário, não há saída.-z
paranc
não está disponível no Linux.No prompt de comando, você pode usar o comando telnet. Por exemplo, para conectar-se ao IP 192.168.10.1 com porta 80,
Para ativar o telnet no Windows 7 e superior, clique em . No artigo vinculado, ative o telnet através do painel de controle -> programas e recursos -> recursos do Windows -> cliente telnet ou apenas execute-o em um prompt de administrador:
fonte
Para fins de script, descobri que o
curl
comando pode fazê-lo, por exemplo:Possivelmente, pode não funcionar para todos os serviços, pois
curl
pode retornar códigos de erro diferentes em alguns casos (conforme comentário), portanto, a adição da seguinte condição pode funcionar de maneira confiável:Nota: Adicionado
-m5
para definir o tempo limite máximo de conexão de 5 segundos.Se você deseja verificar também se o host é válido, também é necessário verificar o
6
código de saída:Para solucionar o código de erro retornado, basta executar:,
curl host:port
por exemplo:Consulte:
man curl
para obter uma lista completa dos códigos de saída.fonte
curl $IP:$PORT
yields:curl: (52) Empty reply from server
(versuscurl: (7) Failed to connect
), mas muito parecidonc
, não posso| grep Empty
por essas declarações de saída como se poderia esperar (algo sobre novas linhas ou falta de saída imediata?). Presumo que sua linha seja condicional com base no código de saída, certo? Eu estou no El Cap; talvez em outras versões ou sistemas operacionais, o estado de falha seja encerrado em-1
vez de52
?curl -s $IP:$PORT >/dev/null; if [ $? -eq 52 ]; then echo "Connected."; else echo "Fail."; fi
Pressione Windows+ Rdigite
cmd
eEnterNo prompt de comando, digite
Se a porta não estiver aberta, esta mensagem será exibida:
Caso contrário, você será levado para a porta aberta (a tela vazia será exibida)
fonte
Use o comando nc,
Você também pode usar o comando telnet
fonte
nc ou 'netcat' também possui um modo de varredura que pode ser útil.
fonte
Eu acho que você está procurando pelo Hping ( http://www.hping.org/ ), que tem uma versão do Windows.
Também é muito útil se você quiser ver onde, ao longo de uma rota, uma porta TCP está sendo bloqueada (como um firewall), onde o ICMP pode não estar.
fonte
No Bash, você pode usar arquivos de pseudo-dispositivo que podem abrir uma conexão TCP no soquete associado. A sintaxe é
/dev/$tcp_udp/$host_ip/$port
.Aqui está um exemplo simples para testar se o Memcached está em execução:
Aqui está outro teste para verificar se um site específico está acessível:
Para obter mais informações, consulte: Guia Avançado de Bash-Scripting: Capítulo 29.
/dev
e/proc
.Relacionado: Teste se uma porta em um sistema remoto está acessível (sem telnet) no SuperUser.
Para mais exemplos, consulte: Como abrir um soquete TCP / UDP em um shell bash (artigo).
fonte