One Liner
Supondo que a variável de ambiente http_proxy
já está definida :
sudo date -s "$(curl -sD - google.com | grep '^Date:' | cut -d' ' -f3-6)Z"
Para garantir que o que está sendo passado para sudo date -s
, basta executar a parte curl ...
do comando para ver sua saída:
curl -sD - google.com | grep '^Date:' | cut -d' ' -f3-6
Ou uma versão mais segura que verifique o comprimento de saída de curl
:
date_utc=$(curl -sD - google.com | grep '^Date:' | cut -d' ' -f3-6)
[ -n "$date_utc" ] && sudo date -s "${date_utc}Z"
Notas
Apenas no caso, certas opções podem ser necessárias para curl
:
-
curl -x $proxy
para definir explicitamente o servidor proxy a ser usado, necessário se http_proxy
não estiver definido, padrão para o protocolo http
e porta 1080
( manual ).
-
curl -H 'Cache-Control: no-cache'
para explicitamente desativar o armazenamento em cache , especialmente quando usado em uma tarefa cron e / ou atrás de um servidor proxy.
Formulário alternativo testado com o RHEL 6 que usa a opção '-u' para a data em vez de anexar o "Z" à saída:
sudo date -u --set="$(curl -H 'Cache-Control: no-cache' -sD - http://google.com |grep '^Date:' |cut -d' ' -f3-6)"
BTW, google.com
é preferível a www.google.com
, porque o primeiro resulta em uma resposta de redirecionamento 301
, que é muito menor ( 569
vs 20k+
caracteres), mas ainda é bom de usar.