伪造特定 shell 会话的日期

伪造特定 shell 会话的日期

我当然想在这里实现一些奇怪的功能,但我想在 GNU/Linux 上为 shell 会话在本地伪造日期。我需要黑盒测试程序在不同日期的行为,修改系统范围的日期可能会产生不良的副作用(cron 作业、混乱的日志等)。

有任何想法吗 ?

答案1

您可以通过以下方式使用可执行文件faketime(来自 ubuntu 存储库sudo apt-get install faketime):

faketime -f "-15d" date

或者甚至可以在整个 shell 中伪造时间

faketime -f "-15d" bash -l

答案2

还没有尝试过。但如果这是最新的,看起来有人已经编写了你可以预加载的库libfaketime

基本用法是:

user@host> LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="-15d" date
Mon Nov  8 12:01:12 CEST 2007

您可以使用它ltrace来确保您的应用程序使用的所有时间功能都被覆盖。

答案3

您可以将 TZ 变量设置为一个奇怪的值。

$ date
Tue May  4 06:24:43 CDT 2010
$ date -u
Tue May  4 11:24:47 UTC 2010
$ export TZ='CDT-3:12'
$ date
Tue May  4 14:36:53 CDT 2010
$ export TZ='CDT+5:37'
$ date
Tue May  4 05:48:00 CDT 2010

答案4

日期软糖是 libfaketime 的替代品。

它的使用方式如下:

datefudge "2020-01-01 12:00" bash

将运行的 shell 更改为 2020 年 1 月 1 日中午

相关内容