40 votes

Faking the date for a specific shell session

Je suis certainement en train d'essayer de réaliser quelque chose d'étrange ici, mais je veux falsifier la date localement pour une session shell sur GNU/Linux. J'ai besoin de tester en boîte noire le comportement d'un programme à différentes dates, et modifier la date système peut avoir des effets indésirables (tâches cron, journaux désordonnés, etc).

Des idées ?

40voto

Vous pouvez simplement utiliser l'exécutable faketime (à partir des dépôts ubuntu sudo apt-get install faketime) en :

faketime -f "-15d" date

Ou même simuler l'heure dans tout le shell en

faketime -f "-15d" bash -l

30voto

Kyle Brandt Points 81077

Je n'ai pas encore essayé cela. Mais si c'est actuel, il semble que quelqu'un a déjà écrit la bibliothèque que vous pouvez précharger avec libfaketime.

L'utilisation de base est :

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

Vous pouvez utiliser ltrace pour vous assurer que toutes les fonctions de temps utilisées par votre application sont couvertes.

7voto

jason saldo Points 5036

Vous pouvez définir la variable TZ sur une valeur bizarre.

$ 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

3voto

Paul Wicks Points 13205

Il est possible de précharger une bibliothèque qui propose une alternative à l'implémentation de time().

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X