Respostas:
Use "netstat" para verificar as portas atualmente em uso.
netstat -antp Proto Recv-Q Send-Q Endereço Local Estado Estrangeiro Estado Nome do PID / Programa tcp 0 0 xxx.xxx.xxx.xxx 0.0.0.0:* LISTEN 16297 / nomeado tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* LISTEN 16297 / named tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* LISTEN 16297 / named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 16297 / named
Esta (netstat) é a solução mais rápida ...
netstat -lnt
... mas isso lhe dá mais controle (ao custo da velocidade (às vezes muita velocidade)) ...
lsof -n -i -a -u www-data
O exemplo acima, por exemplo, mostra todas as portas TCP abertas e no LISTEN
estado AND ( -a
) pertencente ao www-data
usuário Apache ( ).
Todas boas respostas.
No entanto, você não menciona se está conectado ao computador em questão. ; P
Caso contrário, o nmap é seu amigo.
para iniciantes, tente:
nmap -O
target
O amap também é uma boa opção, que também tentará adivinhar o software do servidor, agarrando páginas de banner.
para iniciantes, tente:
amap
target
1-6000
Experimentar
lsof -i :<port number>
Se você obtiver algum resultado, algo está escutando e vinculado, por exemplo
# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1833 nobody 3u IPv4 51091229 0t0 TCP odessa.cheney.net:http->79.173.188.214:52918 (ESTABLISHED)
nginx 1833 nobody 5u IPv4 46221856 0t0 TCP odessa.cheney.net:http->66.36.243.182:37876 (CLOSE_WAIT)
nginx 1833 nobody 9u IPv4 34733048 0t0 TCP localhost.localdomain:http (LISTEN)
nginx 1833 nobody 10u IPv4 34733049 0t0 TCP odessa.cheney.net:http (LISTEN)
nginx 1833 nobody 14u IPv4 46221857 0t0 TCP odessa.cheney.net:http->66.36.243.182:37880 (CLOSE_WAIT)
nginx 1833 nobody 15u IPv4 51091030 0t0 TCP odessa.cheney.net:http->msnbot-65-55-106-132.search.msn.com:51708 (ESTABLISHED)
nginx 11832 root 9u IPv4 34733048 0t0 TCP localhost.localdomain:http (LISTEN)
nginx 11832 root 10u IPv4 34733049 0t0 TCP odessa.cheney.net:http (LISTEN)
netstat -tlnp
Mostre as t
portas cp que estão l
diminuindo, mostre n
apenas os umbers (não resolva nomes - torna mais rápido) e mostre o p
rocess que está ouvindo (o p
único funciona se você for root)
netstat -ulnp
Mostre as u
portas dp que estão l
diminuindo, mostre n
apenas umbers (não resolva nomes - torna mais rápido) e mostre o p
rocess que está ouvindo (o p
único funciona se você for root)
netstat -unp
Mostre as u
portas dp que estão abertas, mas não escutam, mostra n
apenas umbers (não resolva nomes - torna mais rápido) e mostra o p
rocess que está escutando (o p
único funciona se você for root)
netstat -an
Mostrar a
ll portas em uso, mostrar n
apenas umbers - não resolva nomes
lsof -i <proto>@<host>:<port>
por exemplo
lsof -i tcp@localhost:25
para ver se alguma coisa está escutando na porta localhost 25 / TCP ou
lsof -i tcp@0.0.0.0:636
para verificar se há soquetes locais ou remotos, escutando (local) ou conectados (local ou remoto) a qualquer host / interface
Você não menciona qual protocolo deseja usar, como TCP ou UDP - e também é importante perceber que "porta" não é tão granular que o sistema suporta para desambiguar soquetes. Por exemplo, se o seu sistema possui vários endereços IP, a porta 80 pode estar em uso em todos os endereços IP (o aplicativo está vinculado a "0.0.0.0" ou "::" ou a cada endereço IP em sucessão) ou pode estar em use somente em um subconjunto desses endereços IP.
A melhor e mais segura maneira de determinar se uma porta / endereço está livre e disponível é tentar vinculá-la. O Netcat é útil para isso.
nc -l [-s abcd] -p NN
tentará ligar à porta TCP NN em (opcional, o padrão será todos os endereços) abcd Adicione a opção -u para fazer o mesmo no UDP.
Em seguida, para saber se a porta está realmente "aberta" como você pede - você precisa começar a examinar as possíveis regras de firewall. Novamente, o mais fácil é tentar se conectar à porta. Use o netcat como acima, no servidor e, a partir de um cliente, use o netcat para tentar conectar-se à porta que você abriu.
nc [-u] abcd NN
se conectará à porta NN no abcd, usando UDP se o sinalizador -u for especificado. Você pode digitar a entrada no final do cliente e ela deve aparecer no servidor. Caso contrário, é necessário analisar as ferramentas específicas do sistema e da rede.
Este one-liner fornece uma lista de todas as portas TCP em uso. Ele funciona no bash no Ubuntu e no OS X.
netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq
A lista terá uma porta por linha sem nenhuma informação extra.
for port in $(netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq); do echo EXECUTE COMMAND FOR PORT $port; done
Muitas maneiras de fazer isso me causaram problemas porque eles não funcionavam no Linux e no OSX e / ou porque não mostravam as portas usadas pelo docker ou processos pertencentes ao root. Agora eu apenas uso este programa javascript:
(certifique-se de ter o nó instalado e que ele funcione node
não apenas nodejs
ou altere o programa de acordo)
salve o seguinte em um arquivo chamado check-port
em seu caminho ou em seu projeto
#!/usr/bin/env node
var http = require('http');
var app = new http.Server();
app.listen(process.argv[2], () => {
process.exit(0)
});
definir permissões
chmod +x path/to/check-port
fugir do seu caminho
check-port 8080
ou execute a partir do mesmo diretório
./check-port 8080
até agora está funcionando muito bem.