Set date and time from http header in router with curl or wget

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP








up vote
1
down vote

favorite












This technique should be similar or the same as on Ubuntu; though the following code does not work on the router. One method is the following:



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


The result is




'ate: invalid date 'Sat, 12 May 2018 18:49:18 GMT




or Get the date from a HTTP response header. Remove clutter. Set the date.



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


The results I get are as follows:



@Heyzeus:/tmp/home/root# date -s `curl -I 'https://google.com/' 2>/dev/null | grep -i '^date:' | sed 's/^[Dd]ate: //g'` BusyBox v1.25.1 (2018-05-06 13:19:15 EDT) multi-call binary.

Usage: date [OPTIONS] [+FMT] [TIME]

Display time (using +FMT), or set time

[-s,--set] TIME Set time to TIME
-u,--utc Work in UTC (don't convert to local time)
-R,--rfc-2822 Output RFC-2822 compliant date string
-I[SPEC] Output ISO-8601 compliant date string SPEC='date' (default) for date only, 'hours', 'minutes', or 'seconds' for date and time to the indicated precision
-r,--reference FILE Display last modification time of FILE
-d,--date TIME Display TIME, not 'now'
-D FMT Use FMT for -d TIME conversion

Recognized TIME formats: hh:mm[:ss] [YYYY.]MM.DD-hh:mm[:ss] YYYY-MM-DD hh:mm[:ss] [[[[[YY]YY]MM]DD]hh]mm[.ss] 'date TIME' form accepts MMDDhhmm[[YY]YY][.ss] instead


Another




date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date:
| cut -d' ' -f5-8)"



results in: date: invalid date '13 May 2018 22:46:44'




The time extrated the first two results is for example:
"Sat, 12 May 2018 18:49:18 GMT"
and date -s requires something more like
2018-05-12 18:49:18
Or as listed under "recognized time formats."



Its close. But "Sat," needs to be removed, month needs replacing with a number, and then arranged properly; If this could be done exclusively in a single terminal command that would be great.







share|improve this question






















  • The last error message seems to be mangled, could you please edit and correct it?
    – dessert
    May 13 at 6:32






  • 1




    Possible duplicate of What is the command to update time and date from internet - Please review the second answer that is identical as your approach.
    – pa4080
    May 13 at 7:00











  • @dessert, updated! @Heyzeus/tmp/home/root# date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z " results in: date: invalid date '13 May 2018 22:46:44Z'. date -s requires something more like 2018-05-12 2018 18:49:18
    – Tyler
    May 13 at 22:47











  • or rather: date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)" results in: date: invalid date '13 May 2018 22:46:44'
    – Tyler
    May 13 at 22:53














up vote
1
down vote

favorite












This technique should be similar or the same as on Ubuntu; though the following code does not work on the router. One method is the following:



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


The result is




'ate: invalid date 'Sat, 12 May 2018 18:49:18 GMT




or Get the date from a HTTP response header. Remove clutter. Set the date.



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


The results I get are as follows:



@Heyzeus:/tmp/home/root# date -s `curl -I 'https://google.com/' 2>/dev/null | grep -i '^date:' | sed 's/^[Dd]ate: //g'` BusyBox v1.25.1 (2018-05-06 13:19:15 EDT) multi-call binary.

Usage: date [OPTIONS] [+FMT] [TIME]

Display time (using +FMT), or set time

[-s,--set] TIME Set time to TIME
-u,--utc Work in UTC (don't convert to local time)
-R,--rfc-2822 Output RFC-2822 compliant date string
-I[SPEC] Output ISO-8601 compliant date string SPEC='date' (default) for date only, 'hours', 'minutes', or 'seconds' for date and time to the indicated precision
-r,--reference FILE Display last modification time of FILE
-d,--date TIME Display TIME, not 'now'
-D FMT Use FMT for -d TIME conversion

Recognized TIME formats: hh:mm[:ss] [YYYY.]MM.DD-hh:mm[:ss] YYYY-MM-DD hh:mm[:ss] [[[[[YY]YY]MM]DD]hh]mm[.ss] 'date TIME' form accepts MMDDhhmm[[YY]YY][.ss] instead


Another




date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date:
| cut -d' ' -f5-8)"



results in: date: invalid date '13 May 2018 22:46:44'




The time extrated the first two results is for example:
"Sat, 12 May 2018 18:49:18 GMT"
and date -s requires something more like
2018-05-12 18:49:18
Or as listed under "recognized time formats."



Its close. But "Sat," needs to be removed, month needs replacing with a number, and then arranged properly; If this could be done exclusively in a single terminal command that would be great.







share|improve this question






















  • The last error message seems to be mangled, could you please edit and correct it?
    – dessert
    May 13 at 6:32






  • 1




    Possible duplicate of What is the command to update time and date from internet - Please review the second answer that is identical as your approach.
    – pa4080
    May 13 at 7:00











  • @dessert, updated! @Heyzeus/tmp/home/root# date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z " results in: date: invalid date '13 May 2018 22:46:44Z'. date -s requires something more like 2018-05-12 2018 18:49:18
    – Tyler
    May 13 at 22:47











  • or rather: date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)" results in: date: invalid date '13 May 2018 22:46:44'
    – Tyler
    May 13 at 22:53












up vote
1
down vote

favorite









up vote
1
down vote

favorite











This technique should be similar or the same as on Ubuntu; though the following code does not work on the router. One method is the following:



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


The result is




'ate: invalid date 'Sat, 12 May 2018 18:49:18 GMT




or Get the date from a HTTP response header. Remove clutter. Set the date.



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


The results I get are as follows:



@Heyzeus:/tmp/home/root# date -s `curl -I 'https://google.com/' 2>/dev/null | grep -i '^date:' | sed 's/^[Dd]ate: //g'` BusyBox v1.25.1 (2018-05-06 13:19:15 EDT) multi-call binary.

Usage: date [OPTIONS] [+FMT] [TIME]

Display time (using +FMT), or set time

[-s,--set] TIME Set time to TIME
-u,--utc Work in UTC (don't convert to local time)
-R,--rfc-2822 Output RFC-2822 compliant date string
-I[SPEC] Output ISO-8601 compliant date string SPEC='date' (default) for date only, 'hours', 'minutes', or 'seconds' for date and time to the indicated precision
-r,--reference FILE Display last modification time of FILE
-d,--date TIME Display TIME, not 'now'
-D FMT Use FMT for -d TIME conversion

Recognized TIME formats: hh:mm[:ss] [YYYY.]MM.DD-hh:mm[:ss] YYYY-MM-DD hh:mm[:ss] [[[[[YY]YY]MM]DD]hh]mm[.ss] 'date TIME' form accepts MMDDhhmm[[YY]YY][.ss] instead


Another




date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date:
| cut -d' ' -f5-8)"



results in: date: invalid date '13 May 2018 22:46:44'




The time extrated the first two results is for example:
"Sat, 12 May 2018 18:49:18 GMT"
and date -s requires something more like
2018-05-12 18:49:18
Or as listed under "recognized time formats."



Its close. But "Sat," needs to be removed, month needs replacing with a number, and then arranged properly; If this could be done exclusively in a single terminal command that would be great.







share|improve this question














This technique should be similar or the same as on Ubuntu; though the following code does not work on the router. One method is the following:



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


The result is




'ate: invalid date 'Sat, 12 May 2018 18:49:18 GMT




or Get the date from a HTTP response header. Remove clutter. Set the date.



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


The results I get are as follows:



@Heyzeus:/tmp/home/root# date -s `curl -I 'https://google.com/' 2>/dev/null | grep -i '^date:' | sed 's/^[Dd]ate: //g'` BusyBox v1.25.1 (2018-05-06 13:19:15 EDT) multi-call binary.

Usage: date [OPTIONS] [+FMT] [TIME]

Display time (using +FMT), or set time

[-s,--set] TIME Set time to TIME
-u,--utc Work in UTC (don't convert to local time)
-R,--rfc-2822 Output RFC-2822 compliant date string
-I[SPEC] Output ISO-8601 compliant date string SPEC='date' (default) for date only, 'hours', 'minutes', or 'seconds' for date and time to the indicated precision
-r,--reference FILE Display last modification time of FILE
-d,--date TIME Display TIME, not 'now'
-D FMT Use FMT for -d TIME conversion

Recognized TIME formats: hh:mm[:ss] [YYYY.]MM.DD-hh:mm[:ss] YYYY-MM-DD hh:mm[:ss] [[[[[YY]YY]MM]DD]hh]mm[.ss] 'date TIME' form accepts MMDDhhmm[[YY]YY][.ss] instead


Another




date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date:
| cut -d' ' -f5-8)"



results in: date: invalid date '13 May 2018 22:46:44'




The time extrated the first two results is for example:
"Sat, 12 May 2018 18:49:18 GMT"
and date -s requires something more like
2018-05-12 18:49:18
Or as listed under "recognized time formats."



Its close. But "Sat," needs to be removed, month needs replacing with a number, and then arranged properly; If this could be done exclusively in a single terminal command that would be great.









share|improve this question













share|improve this question




share|improve this question








edited May 13 at 22:55

























asked May 13 at 0:07









Tyler

264




264











  • The last error message seems to be mangled, could you please edit and correct it?
    – dessert
    May 13 at 6:32






  • 1




    Possible duplicate of What is the command to update time and date from internet - Please review the second answer that is identical as your approach.
    – pa4080
    May 13 at 7:00











  • @dessert, updated! @Heyzeus/tmp/home/root# date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z " results in: date: invalid date '13 May 2018 22:46:44Z'. date -s requires something more like 2018-05-12 2018 18:49:18
    – Tyler
    May 13 at 22:47











  • or rather: date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)" results in: date: invalid date '13 May 2018 22:46:44'
    – Tyler
    May 13 at 22:53
















  • The last error message seems to be mangled, could you please edit and correct it?
    – dessert
    May 13 at 6:32






  • 1




    Possible duplicate of What is the command to update time and date from internet - Please review the second answer that is identical as your approach.
    – pa4080
    May 13 at 7:00











  • @dessert, updated! @Heyzeus/tmp/home/root# date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z " results in: date: invalid date '13 May 2018 22:46:44Z'. date -s requires something more like 2018-05-12 2018 18:49:18
    – Tyler
    May 13 at 22:47











  • or rather: date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)" results in: date: invalid date '13 May 2018 22:46:44'
    – Tyler
    May 13 at 22:53















The last error message seems to be mangled, could you please edit and correct it?
– dessert
May 13 at 6:32




The last error message seems to be mangled, could you please edit and correct it?
– dessert
May 13 at 6:32




1




1




Possible duplicate of What is the command to update time and date from internet - Please review the second answer that is identical as your approach.
– pa4080
May 13 at 7:00





Possible duplicate of What is the command to update time and date from internet - Please review the second answer that is identical as your approach.
– pa4080
May 13 at 7:00













@dessert, updated! @Heyzeus/tmp/home/root# date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z " results in: date: invalid date '13 May 2018 22:46:44Z'. date -s requires something more like 2018-05-12 2018 18:49:18
– Tyler
May 13 at 22:47





@dessert, updated! @Heyzeus/tmp/home/root# date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z " results in: date: invalid date '13 May 2018 22:46:44Z'. date -s requires something more like 2018-05-12 2018 18:49:18
– Tyler
May 13 at 22:47













or rather: date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)" results in: date: invalid date '13 May 2018 22:46:44'
– Tyler
May 13 at 22:53




or rather: date -s "$(wget -qSO- --max-redirect=0 startpage.com 2>&1 | grep Date: | cut -d' ' -f5-8)" results in: date: invalid date '13 May 2018 22:46:44'
– Tyler
May 13 at 22:53










1 Answer
1






active

oldest

votes

















up vote
0
down vote













Thanks to Twiglets



Here is an alternative that DOES set the date !!! [-s option].
Prints out 'Date' it retrieves & the 'Date' that is set for comparison.



This works on the AsusWRT / Merlin, the only thing that is odd is that the date retrieved is ".... GMT" and the date utility sets the correct time but changes it to "... DST"
Environment has TZ set to "GMT"



datetext=$(curl -I 'https://1.1.1.1/' 2>/dev/null | grep "Date:" |sed 's/Date: [A-Z][a-z][a-z], //g'| sed 's/r//') ; echo "Date Retrieved = $datetext" ; echo -n "Date set = " ; date -s "$datetext" -D'%d %b %Y %T %Z'





share|improve this answer




















    Your Answer







    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "89"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: false,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );








     

    draft saved


    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1035525%2fset-date-and-time-from-http-header-in-router-with-curl-or-wget%23new-answer', 'question_page');

    );

    Post as a guest






























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote













    Thanks to Twiglets



    Here is an alternative that DOES set the date !!! [-s option].
    Prints out 'Date' it retrieves & the 'Date' that is set for comparison.



    This works on the AsusWRT / Merlin, the only thing that is odd is that the date retrieved is ".... GMT" and the date utility sets the correct time but changes it to "... DST"
    Environment has TZ set to "GMT"



    datetext=$(curl -I 'https://1.1.1.1/' 2>/dev/null | grep "Date:" |sed 's/Date: [A-Z][a-z][a-z], //g'| sed 's/r//') ; echo "Date Retrieved = $datetext" ; echo -n "Date set = " ; date -s "$datetext" -D'%d %b %Y %T %Z'





    share|improve this answer
























      up vote
      0
      down vote













      Thanks to Twiglets



      Here is an alternative that DOES set the date !!! [-s option].
      Prints out 'Date' it retrieves & the 'Date' that is set for comparison.



      This works on the AsusWRT / Merlin, the only thing that is odd is that the date retrieved is ".... GMT" and the date utility sets the correct time but changes it to "... DST"
      Environment has TZ set to "GMT"



      datetext=$(curl -I 'https://1.1.1.1/' 2>/dev/null | grep "Date:" |sed 's/Date: [A-Z][a-z][a-z], //g'| sed 's/r//') ; echo "Date Retrieved = $datetext" ; echo -n "Date set = " ; date -s "$datetext" -D'%d %b %Y %T %Z'





      share|improve this answer






















        up vote
        0
        down vote










        up vote
        0
        down vote









        Thanks to Twiglets



        Here is an alternative that DOES set the date !!! [-s option].
        Prints out 'Date' it retrieves & the 'Date' that is set for comparison.



        This works on the AsusWRT / Merlin, the only thing that is odd is that the date retrieved is ".... GMT" and the date utility sets the correct time but changes it to "... DST"
        Environment has TZ set to "GMT"



        datetext=$(curl -I 'https://1.1.1.1/' 2>/dev/null | grep "Date:" |sed 's/Date: [A-Z][a-z][a-z], //g'| sed 's/r//') ; echo "Date Retrieved = $datetext" ; echo -n "Date set = " ; date -s "$datetext" -D'%d %b %Y %T %Z'





        share|improve this answer












        Thanks to Twiglets



        Here is an alternative that DOES set the date !!! [-s option].
        Prints out 'Date' it retrieves & the 'Date' that is set for comparison.



        This works on the AsusWRT / Merlin, the only thing that is odd is that the date retrieved is ".... GMT" and the date utility sets the correct time but changes it to "... DST"
        Environment has TZ set to "GMT"



        datetext=$(curl -I 'https://1.1.1.1/' 2>/dev/null | grep "Date:" |sed 's/Date: [A-Z][a-z][a-z], //g'| sed 's/r//') ; echo "Date Retrieved = $datetext" ; echo -n "Date set = " ; date -s "$datetext" -D'%d %b %Y %T %Z'






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered May 14 at 21:16









        Tyler

        264




        264






















             

            draft saved


            draft discarded


























             


            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1035525%2fset-date-and-time-from-http-header-in-router-with-curl-or-wget%23new-answer', 'question_page');

            );

            Post as a guest













































































            Popular posts from this blog

            pylint3 and pip3 broken

            Missing snmpget and snmpwalk

            How to enroll fingerprints to Ubuntu 17.10 with VFS491