Como obter data e hora usando o comando curl?

-1

No meu PC, o RTC não está funcionando. Por isso, quero o Date & amp; Time do servidor usando o comando curl ou existe alguma possibilidade de obter data e hora sem o RTC no PC. O formato requerido para data e hora é DDMMYYYYHHMMSS .

    
por manikanta 02.03.2016 / 18:38

3 respostas

2

Primeiro, curl faz solicitações de http. Supondo que você tenha um servidor web escutando na máquina, você tem 2 opções:

  1. Crie um script (php / asp / node) que forneça a data e a hora como resposta à solicitação.

  2. Obtenha o tempo dos cabeçalhos de resposta do servidor.

    curl -v https://google.com/
    

    isso lhe dará, entre outras coisas, uma linha como essa

    ...
    < Date: Wed, 02 Mar 2016 18:39:13 GMT
    ...
    

    Com esse resultado, você pode analisar e transformar no formato desejado.

    dateFromServer=$(curl -v --silent https://google.com/ 2>&1 \
       | grep Date | sed -e 's/< Date: //'); date +"%d%m%Y%H%M%S" -d "$dateFromServer"
    

    Você deve observar a diferença entre GMT e horário local e adaptá-lo às suas necessidades.

por bistoco 02.03.2016 / 19:45
1

Se você precisar obter tempo de um servidor remoto, use um servidor NTP.

Por exemplo:

$ ntpq -c 'rv 0 clock' localhost
clock=da8b6fe7.ae195287  Thu, Mar 10 2016  9:30:39.680

O valor clock é o registro de data e hora NTP em hexadecimal (a data de 01/01/1900). Você pode processá-lo um pouco para obter um timestamp do Unix, que pode ser usado com date :

$ ntpq -c raw -c 'rv 0 clock' localhost
Output set to raw
clock=0xda8b775d.ee94c630
$ ntpq -c raw -c 'rv 0 clock' localhost | gawk -F '[ =.]' --non-decimal-data 'NR==2{printf "@%d.%d\n", $2 - 2209075200, "0x"$3}'
@1457497973.4177870717
$ ntpq -c raw -c 'rv 0 clock' localhost | gawk -F '[=.]' --non-decimal-data 'NR==2{printf "@%d.%d\n", $2 - 2209075200, "0x"$3}' | xargs date +'%d%m%Y%H%M%S' -d 
09032016100323

No meu caso, eu tenho um daemon NTP rodando localmente, que eu poderia consultar, daí o uso de localhost . Você poderia usar, em vez disso, um dos muitos servidores NTP públicos, como ntp.ubuntu.com .

O comando awk lê a linha, divide-a em = e . , de modo que os três campos são clock , a parte inteira do registro de data e hora e a parte fracionária. Em seguida, subtrai 2209075200 (a diferença em segundos entre as épocas Unix e NTP, conforme obtida de esta postagem SO ) do parte inteira e imprime ambas as partes em decimal.

    
por muru 10.03.2016 / 05:37
0

Obtenha a data de um cabeçalho de resposta HTTP. Remova a desordem. Definir a data.

$ date -s 'curl -I 'https://google.com/' 2>/dev/null | grep -i '^date:' | sed 's/^[Dd]ate: //g''

Espero que ajude.

    
por Koutheir Attouchi 13.07.2017 / 13:38