Pular para o conteúdo

Dicas rápidas para linha de comando

Quando comecei a usar o GNU/Linux, o que mais me prendeu ao sistema foi o poder dado ao usuário pela linha de comandos. Que me perdoem os amantes da GUI, mas para mim a CLI é a verdadeira alma do sistema, o verdadeiro poder.
Zephyrus (formerly mkmastersys) Zephyr
Hits: 13.585 Categoria: Linux Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Introdução

Quando comecei a usar o GNU/Linux, o que mais me prendeu ao sistema foi o poder dado ao usuário pela linha de comandos. Que me perdoem os amantes da GUI, mas para mim a CLI é a verdadeira alma do sistema, o verdadeiro poder.

Deixo aqui algumas dicas rápidas para a linha de comandos. Com certeza muitos usuários já conhecem os macetes, mas pode servir de ajuda/auxílio principalmente para os iniciantes.

Vamos lá.

Assista Star Wars em modo ASCII

Dê o seguinte comando no shell:

telnet towel.blinkenlights.nl

Agora é só curtir o filme. :D

Descubra seu IP externo pela linha de comandos

De vez em sempre precisamos saber o nosso IP dinâmico externo fornecido pela operadora. Existem N formas de fazer isso.

Aqui vou passar somente algumas dicas para a linha de comandos, pois é a forma que julgo mais rápida, até mais rápida do que ter de acessar a página de configuração do roteador/modem para consultar o IP adquirido.

Usando wget (utilize qualquer uma das opções, encontre a que você achar mais eficiente):

wget -qO - icanhazip.com
$ wget -qO - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
$ wget -qO - ifconfig.me
$ wget -qO - ip.appspot.com
$ wget http://ipecho.net/plain -O - -q ; echo


Usando cURL (utilize qualquer uma das opções, encontre a que você achar mais eficiente):

curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
$ curl -s checkip.dyndns.org | grep -Eo '[0-9\.]+'
$ curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"
$ curl -s monip.org | iconv -f iso-8859-1 | sed -n 's/.*IP : \([0-9.]*\).*/\1/p'
$ curl ifconfig.me
$ curl ipecho.net/plain
$ curl icanhazip.com
$ curl ipv4.icanhazip.com
# Explicitamente evoca o IPv4
curl ipv6.icanhazip.com # Explicitamente evoca o IPv6
curl curlmyip.com
$ curl l2.io/ip
$ curl ip.appspot.com
$ curl ifconfig.me/ip
$ curl eth0.me


Com JSON, caso você queira:

curl httpbin.org/ip
$ curl wtfismyip.com/json


Usando dig:

dig +short myip.opendns.com @resolver1.opendns.com

Usando lynx:

lynx -dump checkip.dyndns.org | grep 'Current IP Address:'
$ lynx -dump eth0.me
$ lynx --dump monip.org | grep 'IP'


Não vou me prolongar mais nesta parte, com eu disse: existem "n" maneiras para se chegar ao mesmo resultado! Cabe a você escolher a que achar melhor. Faça alterações nos comandos, faça suas experiências, adapte-os.

Basta olhar na lista e verá que existem várias adaptações e modificações para um mesmo comando principal. O que influencia no final é sua escolha.

Finalizando esta parte, indico uma última alternativa:

Quem usa Debian/Ubuntu pode instalar, caso já não tenha instalado, o pequeno programa miniupnpc se o seu roteador/modem tiver suporte para UPnP.

Depois de instalado é só executar:

upnpc -s | grep ^ExternalIPAddress | cut -c21-

Esse comando fará o mesmo que todos os outros indicados nesta seção: te mostrará seu IP dinâmico externo.

Dica: você pode criar um Shell Script simples com algum dos comandos acima para tornar o processo ainda mais rápido. Exemplo:

#!/bin/bash

#Cria variável e atribui valor
MYDINIPADDRESS="`curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`"

echo "\n O seu endereço IP externo é: $MYDINIPADDRESS"

Salve o arquivo (de preferência coloque a extensão .sh), torne-o executável alterando suas permissões e depois é só executar.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Introdução
   2. Um pouco de cURL
   3. Comandos úteis
Nenhum artigo encontrado.

SuperGRUB - Perdeu a MBR? Recupere-a com este programa

SSH - Tradução da man page

Instalando e utilizando o agendador at

O futuro e o Linux

Linux: Executando comandos utilizando a tecnologia biométrica de reconhecimento de voz

#1 Comentário enviado por Zephyr em 29/01/2015 - 15:02h
*ERRATA:

No Artigo, na sugestão de script que dei, no comando final echo eu me esqueci de incluir a opção: -e
Sem essa opção o echo não estará habilitado a interpretar a barra invertida em \n.

O exemplo corrigido segue abaixo:

==========================================================================
#!/bin/bash

#Cria variável e atribui valor

MYDINIPADDRESS="`curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`"


echo -e "\n O seu endereço IP externo é: $MYDINIPADDRESS"

==========================================================================

#2 Comentário enviado por fabio em 29/01/2015 - 18:22h
Muito bom o artigo, meus parabéns!
#3 Comentário enviado por Zephyr em 31/01/2015 - 21:26h

[2] Comentário enviado por fabio em 29/01/2015 - 18:22h

Muito bom o artigo, meus parabéns!


Thanx man!
#4 Comentário enviado por removido em 31/01/2015 - 22:06h
Interessante o artigo
Parabéns.
#5 Comentário enviado por Zephyr em 31/01/2015 - 23:47h

[4] Comentário enviado por offsec em 31/01/2015 - 22:06h

Interessante o artigo
Parabéns.


Thanx. Valeu!
#6 Comentário enviado por jhonatanp em 01/02/2015 - 12:49h
Nossa muito legal esses comandos,

Eu não sabia que dava pra testar porta assim geração aletoria muito legal e rastrear o Star Wars foi D + heuehueh.

Eu fiz uma versão com awk do comando que mostra ip e que comtemple os dois idiomas.

ifconfig | awk '/inet (end|addr).?:/ && !/127.0.0.1/ {print $3}'
#7 Comentário enviado por Zephyr em 01/02/2015 - 13:01h

[6] Comentário enviado por jhonatanp em 01/02/2015 - 12:49h

Nossa muito legal esses comandos,

Eu não sabia que dava pra testar porta assim geração aletoria muito legal e rastrear o Star Wars foi D + heuehueh.

Eu fiz uma versão com awk do comando que mostra ip e que comtemple os dois idiomas.

ifconfig | awk '/inet (end|addr).?:/ &amp;&amp; !/127.0.0.1/ {print $3}'


Valeu pela contribuição!



#8 Comentário enviado por hellnux em 02/02/2015 - 20:01h
Olá!

Bela contribuição. Gosto muito deste tipo de dica. Já usei bastante esses de pegar IP, mas ele não são muito eficientes quando o locale são diferentes.

Por exemplo, quando o LANG=en_US
$ ifconfig | grep "inet end.:" | awk '{print $3}' | grep -v '127.0.0.1' | cut -f2 -d:
retorna nada
$ ifconfig | awk '/inet (end|addr).?:/ &amp;&amp; !/127.0.0.1/ {print $3}'
Bcast:IP_qualquer

Prefiro usar apenas:
$ hostname -i

Assim deixo minha contribuição =D
#9 Comentário enviado por albfneto em 03/02/2015 - 11:37h
Muito bom esse artigo. Geral e comandos de uso amplo. Favoritado.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux,Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva.
#10 Comentário enviado por Zephyr em 04/02/2015 - 00:13h

[8] Comentário enviado por hellnux em 02/02/2015 - 20:01h

Olá!

Bela contribuição. Gosto muito deste tipo de dica. Já usei bastante esses de pegar IP, mas ele não são muito eficientes quando o locale são diferentes.

Por exemplo, quando o LANG=en_US
$ ifconfig | grep "inet end.:" | awk '{print $3}' | grep -v '127.0.0.1' | cut -f2 -d:
retorna nada
$ ifconfig | awk '/inet (end|addr).?:/ &amp;amp;&amp;amp; !/127.0.0.1/ {print $3}'
Bcast:IP_qualquer

Prefiro usar apenas:
$ hostname -i

Assim deixo minha contribuição =D


Obrigado pela contribuição.
Explico aqui o porque dos comandos não funcionarem quando em LANG=en_US.

Quando o sistema está configurado para o inglês, o comando ifconfig imprime o resultado e mais especificamente a parte que queremos (o endereço IP) da seguinte forma:

eth0 Link encap:Ethernet HWaddr 00:1e:c9:fa:25:8b
inet addr:192.168.0.13 Bcast:192.168.0.255 Mask:255.255.255.0
etc
etc
....

Já para a LANG=pt_BR.UTF-8, o resultado é o seguinte:

eth0 Link encap:Ethernet Endereço de HW 00:1e:c9:fa:25:8b
inet end.: 192.168.0.13 Bcast:192.168.0.255 Masc:255.255.255.0
etc
etc
....
O problema ocorre exatamente por causa da formatação da 2º linha: em inglês, a parte que queremos fica:
"inet addr:192.168.0.13" e em português fica: "inet end.: 192.168.0.13"

Note que no inglês não há espaço entre addr: e o número do IP e em português há.

Sendo assim, em inglês o IP está em $2 e em português está em $3

Adaptando os comandos, tanto o que passei quanto o criado pelo colega @jhonatanp fica o seguinte:

Para sistemas em inglês:

ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d: (comando que apresentei modificado: troquei o $3 por $2)
ifconfig | awk '/inet (end|addr).?:/ && !/127.0.0.1/ {print $2}'| cut -f2 -d: (comando do @jhonatanp modificado: acrescentei
o cut para retirar "addr:" do resultado; troquei o $3 por $2)

Em relação ao "hostname -i", ele é mais rápido e também outra alternativa.

Bom, como eu digo: "Vários caminhos para o mesmo destino!
#11 Comentário enviado por pdcassiano em 06/02/2015 - 08:29h

Muito bom o Post.

Contribuir com comentário

Entre na sua conta para comentar.