17
Receitas - comandos úteis de rede para devs!
Se você escreve aplicações web ou precisa interagir com serviços remotos com certeza já passou por alguns dos problemas que vamos mostrar a solução aqui. Usaremos apenas duas ferramentas: os comandos telnet e netstat.
E não daremos apenas uma receita, mas algumas!
Ingredientes
- Sistema operacional - usaremos o Linux como exemplo, mas pode substituir por Windows ou MacOS
- netstat - nosso canivente suisso, disponível também pra Windows e MacOS
- telnet - cujo uso nós vamos subverter aqui. Se estiver usando Windows, uma implementação muito fácil de ser usada é o putty.
Se você usa Linux é quase certo que o comando telnet já está instalado, assim como o netstat. Caso não esteja, consulte a documentação da sua distribuição para aprender como proceder.
No caso do MacOS o netstat já vêm como padrão, mas não o telnet. Aprenda a instalá-lo neste link.
Usaremos o Linux como base e em algumas receitas usamos o comando | (pipe) usado para direcionar a saída de um comando para que seja a entrada de outro. Se não conhece este recurso, leia este texto (seção 12.5) antes.
As receitas do dia
Use o telnet para verificar se um serviço de rede é acessível a partir da sua máquina
O telnet é um protocolo de rede que te permite se conectar a outros serviços usando o modo texto no formato pergunta/resposta. Essencialmente você envia comandos, a outra ponta os recebe e te responde na sequência. Como boa parte dos protocolos da internet estão neste formato, você pode usá-lo para interagir com boa parte destes serviços.
Mas você também pode subverter seu uso se quiser apenas verificar se um serviço está online. Imagine que você queira verificar se sua máquina é capaz de acessar um servidor MySQL, por exemplo, cuja porta de comunicação é a 3306 e nesta máquina local não exista um cliente MySQL. Como você faz? Simples: use o modo "raw" do telnet com a sintaxe abaixo:
telnet [endereço/IP] [porta]
Vamos a um exemplo: quero ver se o MySQL está executando em minha máquina. Executo então o comando "telnet localhost 3306". Olha o resultado no meu console:
O MySQL usa um protocolo binário, por isto esta resposta com caracteres estranhos. Se você ver esta resposta é sinal de que o serviço é acessível. Se eu quiser acessar um serviço que não está acessível, veja como seria a saída: no caso, supondo que a porta 1234 estivesse aberta no Google.
E você nunca terá uma resposta pois nada está escutando nesta porta (1234) no endereço google.com. Digite Ctrl-C para terminar a conexão. Você também pode obter uma resposta similar à exposta a seguir:
Verificar quais as portas ativas no seu computador com netstat
Já tentou subir um servidor na sua máquina e topou com mensagens de erro dizendo que a porta já está em uso? Esta receita com netstat te mostra como. Basta executar um comando:
netstat -tnlp
Você terá uma saída similar a esta:
Descobrir qual processo está usando uma porta com netstat
E agora vamos resolver aquele problema do "não foi possível iniciar seu servidor por que a porta está em uso"? Precisamos saber qual o processo. Imagine que nosso desejo seja saber que processo está usando a porta 8080. Como fazer isto?
netstat -tulpn | grep 8080
Ali ela ó!
Ao final da linha você vê o código do processo e qual programa está executando a porta.
O que quer dizer este "-tunlp"?
- t - lista apenas as conexões TCP
- n - mostra os endereços no formato numérico
- l - lista apenas os sockets que estão esperando conexões
- p - expõe o nome do processo e seu identificador
- u - expõe as conexões UDP caso deseje também
Como saber quantas conexões estão ativas em uma porta com netstat
A receita final: você quer saber quantas conexões estão ocorrendo contra uma porta em seu servidor. Vamos ao comando mágico usando como exemplo a porta 443?
netstat -anp | grep :443 | wc -l
O parâmetro -a representa conexões ativas. Na sequência filtramos todas as conexões na porta 443 e, finalmente, o filtro final, usando o comando "wc -l" do Linux, que nos retorna o número de linhas da saída.
Quer ver um exemplo?
Ali: 33 conexões ativas usando a porta 443 deste servidor. Esta receita é muito útil quando você precisa, por exemplo, verificar se há conexões com o banco de dados, se estão acessando seu site, etc.
As deliciosas receitas da itexto
Estas receitas tem como objetivo te dar um pontapé inicial para que possa resolver rapidamente seus problemas mais comuns. Naturalmente há muitas outras soluções para estes mesmos problemas e estas não são as melhores soluções. Tem sugestões? Mande pra nós!
Esta receita faz parte do Livro de Receitas da itexto que abrimos recentemente para todos. Toda semana publicamos ao menos duas de nossas receitas aqui. Acreditamos que o Livro de Receitas seja uma importante ferramenta para aumentar a produtividade da sua equipe. Quer aprender a escrever o seu? Te contamos como fazer neste post, clique aqui!
Até as próximas receitas!
17