Você não pode executar ping nas portas, pois o Ping está usando o ICMP que não possui o conceito de portas. As portas pertencem aos protocolos da camada de transporte como TCP e UDP. No entanto, você pode usar o nmap para ver se as portas estão abertas ou não
nmap -p 80 example.com
Edit: Como o flokra mencionou, o nmap é mais do que apenas um ping-for-ports-thingy. É o melhor amigo dos auditores e hackers de segurança e vem com várias opções interessantes. Verifique o documento para todos os sinalizadores possíveis.
Você pode adicionar -PNpara ignorar a descoberta de host que o nmap geralmente faz antes de testar a porta especificada.
Flokra 8/10/09
27
Para poupar algumas pessoas de problemas: o nmap / pode / pode ser instalado no Windows a partir do link (ou google nmap windows), MAS NÃO funciona em VPNs. O PaPing não parecia capaz de digitalizar um intervalo de endereços. Postei abaixo o script Python que funcionará através da VPN para verificar uma variedade de portas em uma variedade de endereços.
23
Para outros: o nmap não existe no Mac OS X, você pode instalar o nmap via homebrew brew install nmapou MacPorts.
Highway of Life
17
O nping é mais adequado para esta tarefa que o nmap. nping faz parte da distribuição nmap.
CMCDragonkai
6
Mac OSX tem 'Network Utility', que tem uma aba scanner de porta
Shanimal
192
Abra uma sessão de telnet para a porta específica, por exemplo:
# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.
Acima comando retornará falha em um diferentes de zero códigos de status de saída. Em alguns casos específicos, como resposta vazia ou malformada (consulte man curl), convém manipular códigos de saída específicos como bem-sucedidos; portanto, verifique esta postagem para obter explicações mais detalhadas.
Eu gosto disso porque curlestá presente por padrão no CentOS, então não preciso instalar nada.
precisa saber é
dobras trabalhou em um Raspberry Pi (distro Raspian)
John M
1
Esta é de longe a solução mais elegante e universal. I tweaked-lo um pouco para torná-lo um oneliner puro:IP="<ip>" ; PORT="<port>" ; curl -s "$IP:$PORT" > /dev/null && echo "Success connecting to $IP on port $PORT." || echo "Failed to connect to $IP on port $PORT."
Lefty G Balogh
21
Encontrei uma solução mais simples usando o PsPing:
O PsPing também vem da equipe do Microsoft SysInternal, por isso pode ser considerado um pouco mais legítimo ao lidar com outras pessoas orientadas pela Microsoft. (E tem melhor funcionalidade do que os muito velhos PortQry)
martyvis
O PSPing tem a vantagem de fornecer medição de latência ao usar uma porta personalizada, algo que o Test-NetConnection não pode fazer (ele apenas relata o tempo de resposta do ICMP).
Jeff Miles
14
No Linux, você pode usar o hping, mas ele usa o TCP, em vez do ICMP.
hping (hping3 no meu ubuntu) é excelente. Repete periodicamente o probe, como o ping faz, e ao contrário de muitas das ferramentas sugeridas aqui. Ele também testa se o pacote é entregue e se a porta está aberta. Se estiver aberto, você recebe flags=SA(por exemplo, SYN ACK), e se está fechado, recebe flags=SR(por exemplo, SYN RST). Note que você provavelmente não precisa da -Vbandeira aqui, mas precisa do sudo / root para executar o hping.
Mc0e
Excelente! Ao contrário de muitas outras respostas, isso informa como a latência de RTT pinge pings até parar.
Edward Anderson
11
O ping é muito específico, mas se você deseja verificar se uma porta está aberta ou não e está executando uma caixa do Windows, o PortQry é seu amigo.
Usei-o apenas para testar controladores de domínio quanto a problemas de conectividade, mas funcionou muito bem nisso, portanto, deve funcionar para você.
O PortQry foi originalmente lançado em 1999/2000 pela equipe do MS Exchange, mas a versão recente do MS parece ter atrapalhado a remoção da capacidade de consultar portas remotas (saúde e segurança).
Luke Puplett
8
Aqui está um aplicativo de console .NET rápido e sujo:
static void Main(string[] args)
{
string addressArgument = null, portArgument = null;
System.Net.Sockets.TcpClient tcpClient = null;
try
{
addressArgument = args[0];
portArgument = args[1];
int portNumber;
portNumber = Int32.Parse(portArgument);
tcpClient = new System.Net.Sockets.TcpClient();
tcpClient.ReceiveTimeout = tcpClient.SendTimeout = 2000;
IPAddress address;
if (IPAddress.TryParse(args[0], out address))
{
var endPoint = new System.Net.IPEndPoint(address, portNumber);
tcpClient.Connect(endPoint);
}
else
{
tcpClient.Connect(addressArgument, portNumber);
}
Console.WriteLine("Port {0} is listening.", portArgument);
}
catch (Exception e)
{
if (e is SocketException || e is TimeoutException)
{
Console.WriteLine("Not listening on port {0}.", portArgument);
}
else
{
Console.WriteLine("Usage:");
Console.WriteLine(" portquery [host|ip] [port]");
}
}
finally
{
if (tcpClient != null)
tcpClient.Close();
}
}
Não há garantia de que o serviço em execução na porta entenda o ping. Também abre a questão de qual "sabor" da porta você deseja executar ping, TCP ou UDP? Como o protocolo "ping" não usa nenhum dos dois (o ping é implementado usando o ICMP ), não faz muito sentido.
Tenho certeza de que o probe Nagios check_tcp faz o que você deseja. Eles podem ser encontrados aqui e, embora projetados para serem usados no contexto de Nagios, todos são programas independentes.
$ ./check_tcp -H host -p 22
TCP OK - 0.010 second response time on port 22|time=0.009946s;0.000000;0.000000;0.000000;10.000000
Esta é a única solução que funciona para VPNs com a máquina cliente sendo o Windows Vista ou Windows 7 , pois as outras respostas listadas simplesmente não funcionam. Esta resposta foi excluída anteriormente e não deveria ter sido, pois é a única solução para um caso comum do mundo real. Como não há apelo disponível para a exclusão, estou reposicionando-o para salvar outras pessoas da frustração que tive ao tentar usar as outras respostas.
O exemplo abaixo localiza quais IPs na VPN que possuem VNC / porta 5900 são abertos com o cliente em execução no Windows 7.
Um script Python curto (v2.6.6) para verificar uma lista específica de IPs e portas:
from socket import *
fTimeOutSec = 5.0
sNetworkAddress = '192.168.1'
aiHostAddresses = range(1,255)
aiPorts = [5900]
setdefaulttimeout(fTimeOutSec)
print "Starting Scan..."
for h in aiHostAddresses:
for p in aiPorts:
s = socket(AF_INET, SOCK_STREAM)
address = ('%s.%d' % (sNetworkAddress, h))
result = s.connect_ex((address,p))
if ( 0 == result ):
print "%s:%d - OPEN" % (address,p)
elif ( 10035 == result ):
#do nothing, was a timeout, probably host doesn't exist
pass
else:
print "%s:%d - closed (%d)" % (address,p,result)
s.close()
print "Scan Completed."
As quatro variáveis na parte superior precisariam ser alteradas para serem apropriadas para qualquer tempo limite, rede, hosts e portas necessários. 5,0 segundos na minha VPN pareciam ser suficientes para funcionar adequadamente de forma consistente, menos (nem sempre) davam resultados precisos. Na minha rede local, 0,5 era mais que suficiente.
Funciona perfeitamente no cliente Win 7 XP Pro / Win Server 2008 R2 para diagnosticar porta fechada. (Eu tive que usar um limiar de tempo limite 30 segundo, mas que pode ser um problema com o ambiente de servidor específico não é um problema com este código)
Se você estiver executando um sistema operacional * nix, tente instalar e usar o "zenmap", é uma interface gráfica do usuário para o nmap e possui vários perfis de verificação úteis, que são uma grande ajuda para o novo usuário.
Respostas:
Você não pode executar ping nas portas, pois o Ping está usando o ICMP que não possui o conceito de portas. As portas pertencem aos protocolos da camada de transporte como TCP e UDP. No entanto, você pode usar o nmap para ver se as portas estão abertas ou não
Edit: Como o flokra mencionou, o nmap é mais do que apenas um ping-for-ports-thingy. É o melhor amigo dos auditores e hackers de segurança e vem com várias opções interessantes. Verifique o documento para todos os sinalizadores possíveis.
fonte
-PN
para ignorar a descoberta de host que o nmap geralmente faz antes de testar a porta especificada.nmap windows
), MAS NÃO funciona em VPNs. O PaPing não parecia capaz de digitalizar um intervalo de endereços. Postei abaixo o script Python que funcionará através da VPN para verificar uma variedade de portas em uma variedade de endereços.brew install nmap
ou MacPorts.Abra uma sessão de telnet para a porta específica, por exemplo:
Para fechar sua sessão, pressione Ctrl+ ].
fonte
netcat
funciona também muito bem e é menos detalhado.netcat
agora é built-in MacOS HighSierra, onde telnet pode ser instalado a partir HomeBrewbrew install telnet
fonte
time
like intime nc -vz www.example.com 80
e você terá uma espécie de RTT também.Se você estiver em uma instalação do Windows com o powershell v4 ou mais recente, poderá usar o módulo powershell test-netconnection:
Exemplo: Test-NetConnection example.com -port 80
Esse cmdlet também possui o alias
tnc
. Por exemplotnc example.com -port 80
fonte
Você pode usar PaPing:
http://code.google.com/p/paping
fonte
-c *
para paping constante (?).Não, você não pode, porque
ping
usa o protocolo ICMP , que nem sequer tem um conceito de portas.fonte
Tente o
curl
comando, como:Por exemplo:
Acima comando retornará falha em um diferentes de zero códigos de status de saída. Em alguns casos específicos, como resposta vazia ou malformada (consulte
man curl
), convém manipular códigos de saída específicos como bem-sucedidos; portanto, verifique esta postagem para obter explicações mais detalhadas.fonte
curl
está presente por padrão no CentOS, então não preciso instalar nada.IP="<ip>" ; PORT="<port>" ; curl -s "$IP:$PORT" > /dev/null && echo "Success connecting to $IP on port $PORT." || echo "Failed to connect to $IP on port $PORT."
Encontrei uma solução mais simples usando o PsPing:
Faz parte do Windows Sysinternals .
fonte
No Linux, você pode usar o hping, mas ele usa o TCP, em vez do ICMP.
fonte
flags=SA
(por exemplo, SYN ACK), e se está fechado, recebeflags=SR
(por exemplo, SYN RST). Note que você provavelmente não precisa da-V
bandeira aqui, mas precisa do sudo / root para executar o hping.ping
e pings até parar.O ping é muito específico, mas se você deseja verificar se uma porta está aberta ou não e está executando uma caixa do Windows, o PortQry é seu amigo.
Usei-o apenas para testar controladores de domínio quanto a problemas de conectividade, mas funcionou muito bem nisso, portanto, deve funcionar para você.
fonte
Aqui está um aplicativo de console .NET rápido e sujo:
fonte
Não.
Não há garantia de que o serviço em execução na porta entenda o ping. Também abre a questão de qual "sabor" da porta você deseja executar ping, TCP ou UDP? Como o protocolo "ping" não usa nenhum dos dois (o ping é implementado usando o ICMP ), não faz muito sentido.
fonte
Tenho certeza de que o probe Nagios check_tcp faz o que você deseja. Eles podem ser encontrados aqui e, embora projetados para serem usados no contexto de Nagios, todos são programas independentes.
fonte
Esta é a única solução que funciona para VPNs com a máquina cliente sendo o Windows Vista ou Windows 7 , pois as outras respostas listadas simplesmente não funcionam. Esta resposta foi excluída anteriormente e não deveria ter sido, pois é a única solução para um caso comum do mundo real. Como não há apelo disponível para a exclusão, estou reposicionando-o para salvar outras pessoas da frustração que tive ao tentar usar as outras respostas.
O exemplo abaixo localiza quais IPs na VPN que possuem VNC / porta 5900 são abertos com o cliente em execução no Windows 7.
Um script Python curto (v2.6.6) para verificar uma lista específica de IPs e portas:
Os resultados pareciam:
As quatro variáveis na parte superior precisariam ser alteradas para serem apropriadas para qualquer tempo limite, rede, hosts e portas necessários. 5,0 segundos na minha VPN pareciam ser suficientes para funcionar adequadamente de forma consistente, menos (nem sempre) davam resultados precisos. Na minha rede local, 0,5 era mais que suficiente.
fonte
Existe uma ferramenta leve, chamada tcping: http://www.linuxco.de/tcping/tcping.html
fonte
No shell Bash, você pode usar o arquivo pseudo-dispositivo TCP , por exemplo:
Aqui está a versão implementando um tempo limite de 1 segundo:
fonte
Se você estiver executando um sistema operacional * nix, tente instalar e usar o "zenmap", é uma interface gráfica do usuário para o nmap e possui vários perfis de verificação úteis, que são uma grande ajuda para o novo usuário.
fonte