我要在特定主机(主机A)上运行一些报告。在此主机(HOST A)上运行的命令可以从远程服务器收集一些信息,但不能收集这些远程主机的“当前”服务器时间。此外,我无权远程连接主机或使用来自主机A的ssh或rsh(rsh日期)收集时间。
所以,我发了两个问题: -
有没有办法通过不使用ssh / rsh来查找远程主机的“当前”服务器时间。
有人可以帮我处理基于GMT时间设置的时间计算脚本。
(我可以用date -u
收集主机A上的GMT时间,并根据GMT时间和远程主机的时区计算远程主机上的大约时间。环境中的所有主机都使用已同步的NTP服务器进行更新)
我在Solaris 10(首选)/ RHEL 6上使用BASH
提前致谢!
答案 0 :(得分:0)
你想要像
这样的东西getZoneOffset() {
#assume ./zones.txt contains lines like
#example.com 3600
#i.e. host and time offset in seconds
remote=$1
set - $(grep "$1" ./zones.txt)
echo $2
}
zoneOffsetSecs=$(getZoneOffset $remote)
now=$(date -u +%s)
there=$((now+zoneOffsetSecs))
date -d @$there
您可能希望在zone.txt文件中找不到远程主机的情况下添加错误处理。
答案 1 :(得分:0)
我已经使用以下方法取得了结果,到目前为止似乎很好,但建议非常受欢迎
bash-4.1$ nowgmt=`date -u|awk '{print $4}'|awk -F: '{print ($1 * 3600) + ($2 * 60) + 50400}'`
bash-4.1$ tzoffset="10:30"
bash-4.1$ offsettime=`echo $tzoffset | awk -F: '{print ($1 * 3600) + ($2 * 60)}'`
bash-4.1$ thertime=$((nowgmt + offsettime))
bash-4.1$ date -d @$thertime | awk '{print $4}'
08:46:00
bash-4.1$ date -d @$thertime | awk '{print $4}' | cut -d ":" -f1-2
08:46