Как протестировать вещи в crontab

Во-первых, не предполагайте, что банки имеют хороших профессионалов безопасности IT-систем, работающих на них. Много не делают .

Однако максимальная длина пароля бесполезна. Это часто требует, чтобы пользователи создали новый пароль (аргументы о значении использования различных паролей на каждом сайте в стороне в настоящий момент), который увеличивает вероятность, они просто запишут их. Это также значительно увеличивает чувствительность для нападения любым вектором от грубой силы до социальной инженерии.

9
задан ulver 12 August 2009 в 12:29
поделиться

6 ответов

«Могу ли я просто заставить crontab запускать скрипт, как если бы я сам запускал его со своего терминала?»

Да:

bash -li -c /path/to/script

Из справочной страницы:

[vindaloo:pgl]:~/p/test $ man bash | grep -A2 -m1 -- -i
   -i        If the -i option is present, the shell is interactive.
   -l        Make bash act as if it had been invoked as a login shell (see
             INVOCATION below).
7
ответ дан 4 December 2019 в 10:33
поделиться

G'day,

One of the basic problems with cron is that you get a minimal environment being set by cron. In fact, you only get four env. var's set and they are:

  • SHELL - set to /bin/sh
  • LOGNAME - set to your userid as found in /etc/passwd
  • HOME - set to your home dir. as found in /etc/passwd
  • PATH - set to "/usr/bin:/bin"

That's it.

However, what you can do is take a snapshot of the environment you want and save that to a file.

Now make your cronjob source a trivial shell script that sources this env. file and then executes your Ruby script.

BTW Having a wrapper source a common env. file is an excellent way to enforce a consistent environment for multiple cronjobs. This also enforces the DRY principle because it gives you just one point to update things as required, instead of having to search through a bunch of scripts and search for a specific string if, say, a logging location is changed or a different utility is now being used, e.g. gnutar instead of vanilla tar.

Actually, this technique is used very successfully with The Build Monkey which is used to implement Continuous Integration for a major software project that is common to several major world airlines. 3,500kSLOC being checked out and built several times a day and over 8,000 regression tests run once a day.

HTH

'Avahappy,

6
ответ дан 4 December 2019 в 10:33
поделиться

Запустите команду set изнутри скрипта ruby, запустите ее из crontab, и вы точно увидите, что установлено, а что нет.

3
ответ дан 4 December 2019 в 10:33
поделиться

Чтобы узнать среду, в которой cron выполняет задания, добавьте это задание cron:

{ echo "\nenv\n" && env|sort ; echo "\nset\n" && set; } | /usr/bin/mailx -s 'my env' you@example.com

Или отправьте вывод в файл вместо электронной почты.

2
ответ дан 4 December 2019 в 10:33
поделиться

Если вы действительно хотите запустить его от имени себя , вы можете вызвать Ruby из сценария оболочки, который является источником вашего .profile / ] .bashrc и т. д. Таким образом он будет работать в вашей среде.

Однако обратная сторона - то, что он не изолирован от вашей среды, и если вы измените это, вы можете обнаружить, что ваши задания cron внезапно перестают работать.

1
ответ дан 4 December 2019 в 10:33
поделиться

Вы можете написать сценарий оболочки, называемый, например, rbcron , который выглядит примерно так:

#!/bin/bash
RUBY=ruby
export VAR1=foo
export VAR2=bar
export VAR3=baz

$RUBY "$*" 2>&1

Это перенаправит стандартную ошибку с ruby ​​на стандартный вывод. Затем вы запускаете rbcron в своем задании cron, и стандартный вывод содержит out + err of ruby, а также ошибки «bash», существующие в самом rbcron. В записи cron перенаправьте 2> & 1> / path / to / output , чтобы получить вывод + сообщения об ошибках, чтобы перейти в /path/to/output.

1
ответ дан 4 December 2019 в 10:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: