当前位置: 首页>>技术教程>>正文


如何获得Sunrise& Linux命令行中任何位置的日落时间

, ,

目的

目的是使用命令行和bash shell脚本来获取Sunrise&任何给定位置的日落时间信息。

操作系统和软件版本

  • 操作系统:-与Linux发行版无关。

要求

已安装lynx工具并访问shell命令行。您的位置代码来自https://weather.codes/search/

困难

简单

约定

  • -要求linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo命令
  • $-要求linux命令以普通非特权用户身份执行

使用说明

我获得Sunrise& amp;的主要动机日落时间,因此编写此简单脚本适用于家庭自动化。就我而言,我想在太阳能发电足以满足设备电力需求的时候启动某些设备。鉴于我的日出时间正确,日落时间信息,可以以适当的小时数抵消开始结束时间。

日出&日落脚本

创建一个 shell 脚本,例如。sunrise-sunset.sh具有以下内容:

#!/bin/bash

# First obtain a location code from: https://weather.codes/search/

# Insert your location. For example LOXX0001 is a location code for Bratislava, Slovakia
location="LOXX0001"

# Obtain sunrise and sunset raw data from weather.com
sun_times=$( lynx --dump  https://weather.com/weather/today/l/$location | grep "\* Sun" | sed "s/[[:alpha:]]//g;s/*//" )
# Alternative curl/wget solution. In case you wish to use curl or wget instead of lynx comment the above line and uncomment one of the lines below:
#sun_times=$( curl -s  https://weather.com/weather/today/l/$location | sed 's/<span/\n/g' | sed 's/<\/span>/\n/g'  | grep -E "dp0-details-sunrise|dp0-details-sunset" | tr -d '\n' | sed 's/>/ /g' | cut -d " " -f 4,8 )
#sun_times=$( wget -qO-  https://weather.com/weather/today/l/$location | sed 's/<span/\n/g' | sed 's/<\/span>/\n/g'  | grep -E "dp0-details-sunrise|dp0-details-sunset" | tr -d '\n' | sed 's/>/ /g' | cut -d " " -f 4,8 )
# Extract sunrise and sunset times and convert to 24 hour format
sunrise=$(date --date="`echo $sun_times | awk '{ print $1}'` AM" +%R)
sunset=$(date --date="`echo $sun_times | awk '{ print $2}'` PM" +%R)

# Use $sunrise and $sunset variables to fit your needs. Example:
echo "Sunrise for location $location: $sunrise"
echo "Sunset for location $location: $sunset"

另外,您也可以从github克隆最新版本:


$ git clone https://github.com/linuxconfig/Sunrise-Sunset-Shell-Script.git

从以下位置获取您的位置代码https://weather.codes/search/并分配给location变量,同时替换当前示例代码。保存文件并使其可执行:


$ chmod +x sunrise-sunset.sh

获取日出&amp;日落时间

确保lynx该命令在Linux系统上可用或运行:


UBUNTU/DEBIAN
# apt install lynx
CENTOS/REDHAT
# yum install lynx

安装它。运行脚本剩下的一切:


$ ./sunrise-sunset.sh 
Sunrise for location LOXX0001: 06:47
Sunset for location LOXX0001: 18:34

我希望您能像我一样找到这个脚本。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10386.html,未经允许,请勿转载。