Por muitos anos o meu comando preferido pra baixar páginas e até fazer mirrors foi o comando wget. Até eu descobrir o curl.
Não que eu já não conhecesse o curl. Com tantos anos de estrada com Unix, principalmente Linux e FreeBSD, curl era um conhecido que eu evitava usar. O motivo? Zona de conforto. wget era um comando conhecido e que eu sempre usava, desde que ando comecei a aprender Unix, em 1997. curl por outro lado era talvez tão antigo quanto, mas cheio de opções cabulosas que eu sentia um certo receio de usar.
Atualmente eu trabalho bastante com backend web e curl virou meu braço direito. E conforme fui aprendendo a usar mais, fui adorando. Hoje em dia não faço um container que seja sem o curl dentro. E acabei até deixando pra lá o wget mas... hoje é dia de falar de curl.
Durante essa semana no trabalho tivemos um problema de servidor web down. Ao tentar conectar ele ficava um tempo tentando dar a resposta e depois enviava um erro 500 (acho que era 503, mas isso não importa). Então como eu queria acessar o serviço assim qeu estivesse disponível e não queria ficar dando reload na aba do navegador, fiz um script com curl. Ele usa uma das opções do curl de retorna um valor do header de resposta, que no caso era os status code.
status_code=0
while [ $status_code -ne 200 ]
do
sleep 10
status_code=$(curl -s -o /dev/null -w "%{http_code}" https://helio.loureiro.eng.br/)
echo "status_code=$status_code"
done
O script fica monitorando o site e retorna o valor do status code em loop.
status_code=500 status_code=500 status_code=500 status_code=500 status_code=500 status_code=200
Assim que receber uma resposta 200, que é ok, para. Deixei isso rodando num shell no canto do desktop (uso duas telas então não bloqueou minha visão de nada). Assim que parou, voltei ao browser e acessei o serviço.
Coisa linda, não?