Во-первых, не предполагайте, что банки имеют хороших профессионалов безопасности IT-систем, работающих на них. Много не делают .
Однако максимальная длина пароля бесполезна. Это часто требует, чтобы пользователи создали новый пароль (аргументы о значении использования различных паролей на каждом сайте в стороне в настоящий момент), который увеличивает вероятность, они просто запишут их. Это также значительно увеличивает чувствительность для нападения любым вектором от грубой силы до социальной инженерии.
«Могу ли я просто заставить 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).
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:
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,
Запустите команду set изнутри скрипта ruby, запустите ее из crontab, и вы точно увидите, что установлено, а что нет.
Чтобы узнать среду, в которой cron выполняет задания, добавьте это задание cron:
{ echo "\nenv\n" && env|sort ; echo "\nset\n" && set; } | /usr/bin/mailx -s 'my env' you@example.com
Или отправьте вывод в файл вместо электронной почты.
Если вы действительно хотите запустить его от имени себя , вы можете вызвать Ruby из сценария оболочки, который является источником вашего .profile
/ ] .bashrc
и т. д. Таким образом он будет работать в вашей среде.
Однако обратная сторона - то, что он не изолирован от вашей среды, и если вы измените это, вы можете обнаружить, что ваши задания cron внезапно перестают работать.
Вы можете написать сценарий оболочки, называемый, например, 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.