Назад | Перейти на главную страницу

Подделка даты определенного сеанса оболочки

Я, конечно, пытаюсь добиться здесь чего-то странного, но я хочу подделать дату локально для сеанса оболочки в GNU / Linux. Мне нужно проверить в черном ящике, как программа ведет себя в разные даты, а изменение общесистемной даты может иметь нежелательные побочные эффекты (задания cron, испорченные журналы и т. Д.).

Любые идеи ?

Вы можете просто использовать исполняемый файл faketime (из репозиториев ubuntu sudo apt-get install faketime) по:

faketime -f "-15d" date

Или даже фальшивое время во всей оболочке

faketime -f "-15d" bash -l

Еще не пробовал. Но если это актуально, похоже, что кто-то уже написал библиотеку, которую вы можете предварительно загрузить libfaketime.

Основное использование:

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

Ты можешь использовать ltrace чтобы убедиться, что охвачены все временные функции, которые использует ваше приложение.

Вы можете установить для переменной 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

Возможно, вы сможете предварительно загрузить библиотеку, у которой есть альтернатива time() реализация.