2015-11-30 3 views
0

Как запустить рубиновый скрипт в cron и заставить его загружать все «необходимые» драгоценные камни? Я сбрасывая этот рубиновый скрипт как подпроцесс в Python:Python/Ruby: cronjob wont load ruby ​​gems?

!#/usr/bin/env python 
... 
def ruby_importdb(import_this): 
    if formatinput == 'nessus': 
    print '[+] importing the report to the database' 
    subprocess.Popen(["/usr/local/rvm/rubies/default/bin/ruby /scripts/nessus-xml2db.rb " + import_this], 
          shell=True, stdout=subprocess.PIPE, universal_newlines=True) 

cronjob выглядит следующим образом:

51 11 * * * /scripts/nessus-export-scans-nes.py 2>&1 | logger

События в/вар/Журнал/сообщения показывают следующую ошибку, когда сценарий питона пробует выполнить функцию рубина подпроцесс:

root: /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require': cannot load such file -- mysql (LoadError) 
root: #011from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require' 
root: #011from /scripts/nessus-report-database/nessus-xml2db.rb:3:in `<main>' 

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

ответ

0

добавив следующие строки в CRONTAB решить эту проблему:

SHELL=/bin/bash 
BASH_ENV=/root/.bashrc 

и добавив следующую строку в .bashrc:

source /usr/local/rvm/environments/default

, который содержит следующие переменные среды:

export PATH="/usr/local/rvm/gems/ruby-2.2.1/bin:/usr/local/rvm/gems/[email protected]/bin:/usr/local/rvm/rubies/ruby-2.2.1/bin:$PATH" 
export GEM_HOME='/usr/local/rvm/gems/ruby-2.2.1' 
export GEM_PATH='/usr/local/rvm/gems/ruby-2.2.1:/usr/local/rvm/gems/[email protected]' 
export MY_RUBY_HOME='/usr/local/rvm/rubies/ruby-2.2.1' 
export IRBRC='/usr/local/rvm/rubies/ruby-2.2.1/.irbrc' 
unset MAGLEV_HOME 
unset RBXOPT 
export RUBY_VERSION='ruby-2.2.1'