In this page I provide the script code for some Weather
services in order to retrieve sunrise and sunset times, eventually using them to
set one or two cron scripts. Please take note about the following points:
#!/bin/bash # # We retrieve sunrise and sunset times from www.datameteo.com # # 1) go to address http://www.datameteo.com/meteo/ # 2) insert your location inside field "Search a place" # 3) copy and paste the internet address here in this script # url="http://www.datameteo.com/meteo/weather_Milan" # we get all the web page allfile=$( wget -qO- $url | sed 's/<br/\n/g' | sed 's/<\/span>/\n/g' | grep -i ">Sunrise"); # we get the original sunrise/sunset time values sunset_str=$(echo $allfile | cut -d ":" -f 2,3 | sed 's|[^0-9]*\([0-9\:]*\)|\1 |g') sunrise_str=$(echo $allfile | cut -d ":" -f 4,5 | sed 's|[^0-9]*\([0-9\:]*\)|\1 |g') echo $sunset_str echo $sunrise_str # we convert time values to Time in 24-hour format sunset=$(/opt/bin/date --date="$sunset_str" +%R) sunrise=$(/opt/bin/date --date="$sunrise_str" +%R) echo $sunset echo $sunrise # we get hour/min values for sunset sun_set1=$(echo $sunset | cut -d ":" -f 1) sun_set2=$(echo $sunset | cut -d ":" -f 2) echo $sun_set1 echo $sun_set2 # we get hour/min values for sunrise sunrise1=$(echo $sunrise | cut -d ":" -f 1) sunrise2=$(echo $sunrise | cut -d ":" -f 2) echo $sunrise1 echo $sunrise2 # uncomment if you want to delete two cron rows for sunset and sunrise scripts #cru d sunsetscript #cru d sunrisescript # uncomment if you want to add two cron rows for sunset and sunrise scripts #cru a sunsetscript "$sun_set2 $sun_set1 * * * sh /opt/etc/myscripts/sunsetscript.sh" #cru a sunrisescript "$sunrise2 $sunrise1 * * * sh /opt/etc/myscripts/sunrisescript.sh" # crontab values # # .---------------- [m]inute: (0 - 59) # | .------------- [h]our: (0 - 23) # | | .---------- [d]ay of month: (1 - 31) # | | | .------- [mon]th: (1 - 12) OR jan,feb,mar,apr... # | | | | .---- [w]eek day: (0 - 6) (sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # # * * * * * command to be executed #
#!/bin/bash # # We retrieve sunrise and sunset times from www.eurometeo.com # # 1) go to address http://www.eurometeo.com/english/search # 2) insert your location # 3) copy and paste the internet address here in this script # url="http://www.eurometeo.com/english/forecast/city_LIML/weather/milan.htm" # we get all the web page allfile=$( wget -qO- $url); # we get the original sunrise/sunset time values sunset_str=$(echo $allfile | sed 's/<br/\n/g' | sed 's/<\/br>/\n/g' | grep -i "The sun rises" | cut -d ">" -f 5 | cut -d "<" -f 1) sunrise_str=$(echo $allfile | sed 's/<br/\n/g' | sed 's/<\/br>/\n/g' | grep -i "The sun rises" | cut -d ">" -f 7 | cut -d "<" -f 1) echo $sunset_str echo $sunrise_str # we convert time values to Time in 24-hour format sunset=$(/opt/bin/date --date="$sunset_str" +%R) sunrise=$(/opt/bin/date --date="$sunrise_str" +%R) echo $sunset echo $sunrise # we get hour/min values for sunset sun_set1=$(echo $sunset | cut -d ":" -f 1) sun_set2=$(echo $sunset | cut -d ":" -f 2) echo $sun_set1 echo $sun_set2 # we get hour/min values for sunrise sunrise1=$(echo $sunrise | cut -d ":" -f 1) sunrise2=$(echo $sunrise | cut -d ":" -f 2) echo $sunrise1 echo $sunrise2 # uncomment if you want to delete two cron rows for sunset and sunrise scripts #cru d sunsetscript #cru d sunrisescript # uncomment if you want to add two cron rows for sunset and sunrise scripts #cru a sunsetscript "$sun_set2 $sun_set1 * * * sh /opt/etc/myscripts/sunsetscript.sh" #cru a sunrisescript "$sunrise2 $sunrise1 * * * sh /opt/etc/myscripts/sunrisescript.sh" # crontab values # # .---------------- [m]inute: (0 - 59) # | .------------- [h]our: (0 - 23) # | | .---------- [d]ay of month: (1 - 31) # | | | .------- [mon]th: (1 - 12) OR jan,feb,mar,apr... # | | | | .---- [w]eek day: (0 - 6) (sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # # * * * * * command to be executed #
#!/bin/bash # Only for italian users # # We retrieve sunrise and sunset times from ilmeteo.it # # 1) go to address https://www.ilmeteo.it # 2) insert your location # 3) copy and paste the internet address here in this script # url="https://www.ilmeteo.it/meteo/Milano" # we get all the web page allfile=$( wget -qO- $url | sed 's/<script/\n/g' | sed 's/<\/script>/\n/g' | grep -E "bi-eff-sole" | tr -d '\n'); # we get the original sunrise/sunset time values sunset_str=$(echo $allfile | cut -d " " -f 3 | cut -d "," -f 1) sunrise_str=$(echo $allfile | cut -d " " -f 5 | cut -d "'" -f 1) echo $sunset_str echo $sunrise_str # we convert time values to Time in 24-hour format sunset=$(/opt/bin/date --date="$sunset_str" +%R) sunrise=$(/opt/bin/date --date="$sunrise_str" +%R) echo $sunset echo $sunrise # we get hour/min values for sunset sun_set1=$(echo $sunset | cut -d ":" -f 1) sun_set2=$(echo $sunset | cut -d ":" -f 2) echo $sun_set1 echo $sun_set2 # we get hour/min values for sunrise sunrise1=$(echo $sunrise | cut -d ":" -f 1) sunrise2=$(echo $sunrise | cut -d ":" -f 2) echo $sunrise1 echo $sunrise2 # uncomment if you want to delete two cron rows for sunset and sunrise scripts #cru d sunsetscript #cru d sunrisescript # uncomment if you want to add two cron rows for sunset and sunrise scripts #cru a sunsetscript "$sun_set2 $sun_set1 * * * sh /opt/etc/myscripts/sunsetscript.sh" #cru a sunrisescript "$sunrise2 $sunrise1 * * * sh /opt/etc/myscripts/sunrisescript.sh" # crontab values # # .---------------- [m]inute: (0 - 59) # | .------------- [h]our: (0 - 23) # | | .---------- [d]ay of month: (1 - 31) # | | | .------- [mon]th: (1 - 12) OR jan,feb,mar,apr... # | | | | .---- [w]eek day: (0 - 6) (sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # # * * * * * command to be executed #
#!/bin/bash # # We retrieve sunrise and sunset times from en.sat24.com # # 1) go to address https://en.sat24.com # 2) insert your location # 3) select tab "Today" # 4) copy and paste the internet address here in this script # url="https://en.sat24.com/en/forecast/t/2876761/milano" # we get all the web page allfile=$( wget -qO- $url); # we get the original sunrise/sunset time values sunset_str=$(echo $allfile | sed 's/<span/\n/g' | sed 's/<\/span>/\n/g' | grep -i "sunrise" | cut -d ">" -f 2) sunrise_str=$(echo $allfile | sed 's/<span/\n/g' | sed 's/<\/span>/\n/g' | grep -i "sunset" | cut -d ">" -f 2) echo $sunset_str echo $sunrise_str # we convert time values to Time in 24-hour format sunset=$(/opt/bin/date --date="$sunset_str" +%R) sunrise=$(/opt/bin/date --date="$sunrise_str" +%R) echo $sunset echo $sunrise # we get hour/min values for sunset sun_set1=$(echo $sunset | cut -d ":" -f 1) sun_set2=$(echo $sunset | cut -d ":" -f 2) echo $sun_set1 echo $sun_set2 # we get hour/min values for sunrise sunrise1=$(echo $sunrise | cut -d ":" -f 1) sunrise2=$(echo $sunrise | cut -d ":" -f 2) echo $sunrise1 echo $sunrise2 # uncomment if you want to delete two cron rows for sunset and sunrise scripts #cru d sunsetscript #cru d sunrisescript # uncomment if you want to add two cron rows for sunset and sunrise scripts #cru a sunsetscript "$sun_set2 $sun_set1 * * * sh /opt/etc/myscripts/sunsetscript.sh" #cru a sunrisescript "$sunrise2 $sunrise1 * * * sh /opt/etc/myscripts/sunrisescript.sh" # crontab values # # .---------------- [m]inute: (0 - 59) # | .------------- [h]our: (0 - 23) # | | .---------- [d]ay of month: (1 - 31) # | | | .------- [mon]th: (1 - 12) OR jan,feb,mar,apr... # | | | | .---- [w]eek day: (0 - 6) (sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # # * * * * * command to be executed #
#!/bin/bash # # We retrieve sunrise and sunset times from www.timeanddate.com # # 1) go to address https://www.timeanddate.com/ # 2) insert your location inside field "World Clock" # 3) go to field "Sun & Moon" and select "Sun & Moon Today" # 4) copy and paste the internet address here in this script # url="https://www.timeanddate.com/astronomy/italy/milan" # we get all the web page allfile=$( wget -qO- $url); # we get the original sunrise/sunset time values sunset_str=$(echo $allfile | sed 's/<p/\n/g' | grep -i "Sunrise Today" | cut -d ">" -f 5 | cut -d "<" -f 1 | tr "." :) sunrise_str=$(echo $allfile | sed 's/<p/\n/g' | grep -i "Sunset Today" | cut -d ">" -f 12 | cut -d "<" -f 1 | tr "." :) echo $sunset_str echo $sunrise_str # we convert time values to Time in 24-hour format sunset=$(/opt/bin/date --date="$sunset_str" +%R) sunrise=$(/opt/bin/date --date="$sunrise_str" +%R) echo $sunset echo $sunrise # we get hour/min values for sunset sun_set1=$(echo $sunset | cut -d ":" -f 1) sun_set2=$(echo $sunset | cut -d ":" -f 2) echo $sun_set1 echo $sun_set2 # we get hour/min values for sunrise sunrise1=$(echo $sunrise | cut -d ":" -f 1) sunrise2=$(echo $sunrise | cut -d ":" -f 2) echo $sunrise1 echo $sunrise2 # uncomment if you want to delete two cron rows for sunset and sunrise scripts #cru d sunsetscript #cru d sunrisescript # uncomment if you want to add two cron rows for sunset and sunrise scripts #cru a sunsetscript "$sun_set2 $sun_set1 * * * sh /opt/etc/myscripts/sunsetscript.sh" #cru a sunrisescript "$sunrise2 $sunrise1 * * * sh /opt/etc/myscripts/sunrisescript.sh" # crontab values # # .---------------- [m]inute: (0 - 59) # | .------------- [h]our: (0 - 23) # | | .---------- [d]ay of month: (1 - 31) # | | | .------- [mon]th: (1 - 12) OR jan,feb,mar,apr... # | | | | .---- [w]eek day: (0 - 6) (sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # # * * * * * command to be executed #
#!/bin/bash # # We retrieve sunrise and sunset times from weather.com # # 1) go to address https://weather.codes/search/ # 2) insert your location # 3) copy and paste the output location code here in this script # location="ITXX0042" # we get all the web page allfile=$( wget -qO- https://weather.com/weather/today/l/$location); # we get the original sunrise/sunset time values sunset_str=$(echo $allfile | sed 's/<span/\n/g' | sed 's/<\/span>/\n/g' | grep -E "dp0-details-sunset" | cut -d ">" -f 2) sunrise_str=$(echo $allfile | sed 's/<span/\n/g' | sed 's/<\/span>/\n/g' | grep -E "dp0-details-sunrise" | cut -d ">" -f 2) echo $sunset_str echo $sunrise_str # we convert time values to Time in 24-hour format sunset=$(/opt/bin/date --date="$sunset_str" +%R) sunrise=$(/opt/bin/date --date="$sunrise_str" +%R) echo $sunset echo $sunrise # we get hour/min values for sunset sun_set1=$(echo $sunset | cut -d ":" -f 1) sun_set2=$(echo $sunset | cut -d ":" -f 2) echo $sun_set1 echo $sun_set2 # we get hour/min values for sunrise sunrise1=$(echo $sunrise | cut -d ":" -f 1) sunrise2=$(echo $sunrise | cut -d ":" -f 2) echo $sunrise1 echo $sunrise2 # uncomment if you want to delete two cron rows for sunset and sunrise scripts #cru d sunsetscript #cru d sunrisescript # uncomment if you want to add two cron rows for sunset and sunrise scripts #cru a sunsetscript "$sun_set2 $sun_set1 * * * sh /opt/etc/myscripts/sunsetscript.sh" #cru a sunrisescript "$sunrise2 $sunrise1 * * * sh /opt/etc/myscripts/sunrisescript.sh" # crontab values # # .---------------- [m]inute: (0 - 59) # | .------------- [h]our: (0 - 23) # | | .---------- [d]ay of month: (1 - 31) # | | | .------- [mon]th: (1 - 12) OR jan,feb,mar,apr... # | | | | .---- [w]eek day: (0 - 6) (sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # # * * * * * command to be executed #
#!/bin/bash # # We retrieve sunrise and sunset times from www.weather-forecast.com # # 1) go to address https://www.weather-forecast.com # 2) insert your location # 3) copy and paste the internet address here in this script # url="https://www.weather-forecast.com/locations/Milan/forecasts/latest" # we get all the web page allfile=$( wget -qO- $url); # we get the original sunrise/sunset time values sunset_str=$(echo $allfile | sed 's/<img/\n/g' | sed 's/<\/span>/\n/g' | grep -E "b-forecast__table-value" | grep -i "sunrise" | cut -d ">" -f 7) sunrise_str=$(echo $allfile | sed 's/<img/\n/g' | sed 's/<\/tr>/\n/g' | grep -E "b-forecast__table-value" | grep -i "sunset" | cut -d ">" -f 11 | cut -d "<" -f 1) echo $sunset_str echo $sunrise_str # we convert time values to Time in 24-hour format sunset=$(/opt/bin/date --date="$sunset_str" +%R) sunrise=$(/opt/bin/date --date="$sunrise_str pm" +%R) echo $sunset echo $sunrise # we get hour/min values for sunset sun_set1=$(echo $sunset | cut -d ":" -f 1) sun_set2=$(echo $sunset | cut -d ":" -f 2) echo $sun_set1 echo $sun_set2 # we get hour/min values for sunrise sunrise1=$(echo $sunrise | cut -d ":" -f 1) sunrise2=$(echo $sunrise | cut -d ":" -f 2) echo $sunrise1 echo $sunrise2 # uncomment if you want to delete two cron rows for sunset and sunrise scripts #cru d sunsetscript #cru d sunrisescript # uncomment if you want to add two cron rows for sunset and sunrise scripts #cru a sunsetscript "$sun_set2 $sun_set1 * * * sh /opt/etc/myscripts/sunsetscript.sh" #cru a sunrisescript "$sunrise2 $sunrise1 * * * sh /opt/etc/myscripts/sunrisescript.sh" # crontab values # # .---------------- [m]inute: (0 - 59) # | .------------- [h]our: (0 - 23) # | | .---------- [d]ay of month: (1 - 31) # | | | .------- [mon]th: (1 - 12) OR jan,feb,mar,apr... # | | | | .---- [w]eek day: (0 - 6) (sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # # * * * * * command to be executed #
#!/bin/bash # # We retrieve sunrise and sunset times from www.wunderground.com # # 1) go to address https://www.wunderground.com/ # 2) insert your location # 3) press tab "HOURLY" # 3) copy and paste the internet address here in this script # url="https://www.wunderground.com/hourly/it/milan?cm_ven=localwx_hour" # we get all the web page allfile=$( wget -qO- $url); # we get the original sunrise/sunset time values sunset_str=$(echo $allfile | tr -d '\n' | sed 's/<div/\n/g' | sed 's/<\/div>/\n/g' | grep -E "astro-data sunrise-icon") sunrise_str=$(echo $allfile | tr -d '\n' | sed 's/<div/\n/g' | sed 's/<\/div>/\n/g' | grep -E "astro-data sunset-icon") echo $sunset_str echo $sunrise_str # we get time values and am/pm values sunset_time1=$(echo $sunset_str | cut -d ">" -f 3 | cut -d "<" -f 1) sunset_time2=$(echo $sunset_str | cut -d ">" -f 5 | cut -d "<" -f 1) sunrise_time1=$(echo $sunrise_str | cut -d ">" -f 3 | cut -d "<" -f 1) sunrise_time2=$(echo $sunrise_str | cut -d ">" -f 5 | cut -d "<" -f 1) # we convert time values to Time in 24-hour format sunset=$(/opt/bin/date --date="$sunset_time1 $sunset_time2" +%R) sunrise=$(/opt/bin/date --date="$sunrise_time1 $sunrise_time2" +%R) echo $sunset echo $sunrise # we get hour/min values for sunset sun_set1=$(echo $sunset | cut -d ":" -f 1) sun_set2=$(echo $sunset | cut -d ":" -f 2) echo $sun_set1 echo $sun_set2 # we get hour/min values for sunrise sunrise1=$(echo $sunrise | cut -d ":" -f 1) sunrise2=$(echo $sunrise | cut -d ":" -f 2) echo $sunrise1 echo $sunrise2 # uncomment if you want to delete two cron rows for sunset and sunrise scripts #cru d sunsetscript #cru d sunrisescript # uncomment if you want to add two cron rows for sunset and sunrise scripts #cru a sunsetscript "$sun_set2 $sun_set1 * * * sh /opt/etc/myscripts/sunsetscript.sh" #cru a sunrisescript "$sunrise2 $sunrise1 * * * sh /opt/etc/myscripts/sunrisescript.sh" # crontab values # # .---------------- [m]inute: (0 - 59) # | .------------- [h]our: (0 - 23) # | | .---------- [d]ay of month: (1 - 31) # | | | .------- [mon]th: (1 - 12) OR jan,feb,mar,apr... # | | | | .---- [w]eek day: (0 - 6) (sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # # * * * * * command to be executed #