首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在本地时间找到最后一次连接到SSH服务器的时间?

如何在本地时间找到最后一次连接到SSH服务器的时间?
EN

Unix & Linux用户
提问于 2020-02-20 20:43:03
回答 2查看 414关注 0票数 0

在国外旅行期间,我将连接到我的祖国的SSH服务器。我可以通过以下方式找到我的连接时间:

代码语言:javascript
复制
last user
last | grep user

但这两个命令给我的连接时间是基于我的国家时间,而不是当地时间。如何获得基于本地时间的连接时间?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-02-20 22:48:42

本地调用date +%Zdate +%:z (参见man 1 date) 或另一条命令来了解您所在的时区。或者你可能已经知道这是Asia/Hong_Kong。然后,在服务器上,在调用TZ时相应地设置last。示例:

代码语言:javascript
复制
# on server
TZ=Asia/Hong_Kong last

服务器必须是知道时区。另一种选择是:

代码语言:javascript
复制
# on server
TZ=foo-8 last
# or even
TZ=bar-08:45 last

(foobar在这里是任意的3个字母字符串)。

注意,有怪癖:如果(本地) date +%:z告诉您+08:00,那么您需要设置TZ=foo-08:00TZ=foo-8。如果它告诉你-08:00,那么TZ=foo+08:00

您可以在远程shell中设置TZexport,因此它会影响整个会话。

如果我正确地读取了man 1 ssh,如果变量位于守护进程(sshd)的环境中,服务器将在您的环境中放置TZ。若要自动使用本地TZ,请执行服务器需要配置。(在测试各种想法之前,请注意,您的本地TZ最初可能被设置,也可能没有设置)。

将本地时区传递到远程端的一种有点麻烦的方法是在命令本身中嵌入变量赋值。示例:

代码语言:javascript
复制
# locally
ssh user@server "TZ='foo$(date +%:z | tr +- -+)' last"

date +%:z | tr +- -+是在本地执行的(tr是因为这种怪癖)。

票数 0
EN

Unix & Linux用户

发布于 2020-02-20 22:52:56

登录到本国的服务器后,请运行

代码语言:javascript
复制
export TZ=$(tzselect)

跟着提示走。它会问你你在哪个大陆,然后哪个国家,甚至更详细的细节。最终,它会告诉你,它正在使用类似于Europe/Madrid的东西,而大多数程序所使用的时间现在将显示在您的PC时间中。

在以后的登录中,您只需使用

代码语言:javascript
复制
 export TZ="Europe/Madrid"

以避免提问。您可以将这一行放在您的~/..bashrc中,如果您要在那里停留任何时间的话。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/568794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档