BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Ferramentas de linha de comando que todo desenvolvedor Web deveria conhecer

Ferramentas de linha de comando que todo desenvolvedor Web deveria conhecer

A linha de comando é, sem dúvida, a interação mais poderosa com o computador, embora não seja tão agradável para quem está acostumado com interfaces visuais de programação.

Para a realização de atividades precisas, exatas e que exijam eficiência, a linha de comando é o meio mais adequado. Contudo, a complexidade de execução de alguns comandos é o preço a ser pago por tal eficácia nos resultados.

Para desenvolvedores web, o conhecimento das possibilidades e técnicas de linha de comando é essencial para a otimização das tarefas diárias. Neste artigo, serão apresentadas algumas ferramentas de linha de comando não tão populares, encontradas em sistemas baseados em Unix, e essenciais a qualquer desenvolvedor web.

As duas primeiras ferramentas que iremos apresentar são o Curl e wget. Estes dois utilitários possuem o mesmo objetivo: transferir o conteúdo de servidores de rede. A principal diferença é que, por padrão, o wget armazena o conteúdo em um arquivo e o Curl exibe o resultado na saída padrão.

Com o Curl é simples obter o endereço IP (via ifconfig.me):

$ curl ifconfig.me
221.83.154.254

E com o wget é simples obter o conteúdo de um arquivo:

$ wget http://cdn1.infoq.com/styles/i/logo-infoq.gif
--2012-07-30 22:45:00--  http://cdn1.infoq.com/styles/i/logo-infoq.gif
Resolvendo cdn1.infoq.com (cdn1.infoq.com)... 63.246.7.157
Conectando-se a cdn1.infoq.com (cdn1.infoq.com)|63.246.7.157|:80... conectado.
A requisição HTTP foi enviada, aguardando resposta... 200 OK
Tamanho: 4706 (4,6K) [image/gif]
Salvando em: "logo-infoq.gif"
100%[========================================================================>] 4.706       --.-K/s   em 0s
2012-07-30 22:45:03 (47,7 MB/s) - "logo-infoq.gif" salvo [4706/4706]

Também é possível utilizar opções mais avançadas do Curl e do wget para a realização de depuração de requisições HTTP. Há suporte à autenticação Basic HTTP e cookies, entre outras funcionalidades. Para se obter o header http de um endereço, por exemplo:

$ curl -I infoq.com
HTTP/1.1 301 Moved Permanently
Date: Tue, 31 Jul 2012 01:48:43 GMT
Server: Apache/2.2.3 (Red Hat)
Location: http://www.infoq.com/
Connection: close
Content-Type: text/html; charset=iso-8859-1

Ou pode-se utilizar a opção -L para seguir redirects:

$ curl -I -L infoq.com
HTTP/1.1 301 Moved Permanently
Date: Tue, 31 Jul 2012 01:49:24 GMT
Server: Apache/2.2.3 (Red Hat)
Location: http://www.infoq.com/
Connection: close
Content-Type: text/html; charset=iso-8859-1
HTTP/1.1 200 OK
Date: Tue, 31 Jul 2012 01:49:24 GMT
Server: Apache/2.2.3 (Red Hat)
Set-Cookie: UserCookie=11f5I0mrRRPwcsbtI7Y2fcJyT8Hw4xrl; Expires=Fri, 26-Jul-2013 01:49:24 GMT; Path=/
Set-Cookie: JSESSIONID=CA98D3339760C9E049133E5444488C27; Path=/
Connection: close
Content-Type: text/html;charset=utf-8

Os parâmetros necessários para o uso dos comandos, no entanto, não são tão amigáveis. Como alternativa, existe o HTTPie: (que é conhecido como "Curl para humanos"), que permite a construção de requisições HTTP através de uma sintaxe simples, tornando-se útil para testes de serviços RESTful:

$http PATCH api.example.com/person/1 X-API-Token:123 name=John email=john@example.org age:=29
PATCH /person/1 HTTP/1.1
User-Agent: HTTPie/0.1
X-API-Token: 123
Content-Type: application/json; charset=utf-8
{"name": "John", "email": "john@example.org", "age": 29}

Outra ferramenta útil é a jsonpp, que permite formatar dados JSON obtidos de um servidor HTTP:

curl -s -L http://t.co/tYTq5Pu | jsonpp

Embora existam ferramentas mais completas de testes de carga em servidores web (como o JMeter, por exemplo, de interface visual), o Siege e o Apache AB são alternativas poderosas para teste de carga com base em linhas de comando. Por exemplo, para testar o site www.infoq.com através de 10 conexões concorrentes com duração de 30 segundos cada, pode-se executar o seguinte comando:

$ siege -c10 www.infoq.com -b -t30s
** SIEGE 2.72
** Preparing 10 concurrent users for battle.
The server is now under siege...
Lifting the server siege...      done.
Transactions:                      139 hits
Availability:                      100.00 %
Elapsed time:                       29.50 secs
Data transferred:                   10.72 MB
Response time:                       2.03 secs
Transaction rate:                    4.71 trans/sec
Throughput:                          0.36 MB/sec
Concurrency:                         9.57
Successful transactions:           139
Failed transactions:                 0
Longest transaction:                 3.63
Shortest transaction:                1.53

Outra função, a fim de se obter detalhes de execução do um servidor web, por exemplo, a ferramenta top pode ser utilizada e mostra um resumo em tempo real da utilização do processador, consumo de memória e lista em detalhes os processos em execução:

$ top
top - 09:45:01 up 42 days, 17:58,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  75 total,   1 running,  74 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    509424k total,   437136k used,    72288k free,    76508k buffers
Swap:   262140k total,     1144k used,   260996k free,   161528k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1 root      20   0  2732 1476 1188 S    0  0.3   0:03.80 init
2 root      20   0     0    0    0 S    0  0.0   0:00.13 kthreadd
3 root      20   0     0    0    0 S    0  0.0   0:00.70 ksoftirqd/0
4 root      20   0     0    0    0 S    0  0.0   1:08.29 kworker/0:0
5 root      20   0     0    0    0 S    0  0.0   0:00.05 kworker/u:0
6 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/0

A fluência na utilização de ferramentas de linha de comando contribui, além da realização de atividades precisas, também à produtividade dos desenvolvedores, através da automação ou da otimização do trabalho realizado.

Mais informações podem ser encontradas no post de Ben Dowling (que inspirou esta publicação), ou ainda em tutoriais de introdução a linha de comando e no post de Gabriel Saldana. Sentiu falta de algum utilitário? Utilize a seção de comentários abaixo e contribua citando suas ferramentas favoritas.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT