Python/Ruby:cronjob不会加载Ruby宝石吗?

Python/Ruby:cronjob不会加载Ruby宝石吗?,python,ruby,rubygems,subprocess,cron-task,Python,Ruby,Rubygems,Subprocess,Cron Task,如何在cron中运行ruby脚本并让它加载所有“require”gem?我将此ruby脚本作为python中的一个子流程启动: !#/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

如何在cron中运行ruby脚本并让它加载所有“require”gem?我将此ruby脚本作为python中的一个子流程启动:

!#/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)
工作内容如下:

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

当python脚本尝试执行ruby子流程函数时,/var/log/messages中的事件显示以下错误:

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>'
root:/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site\u ruby/2.2.0/rubygems/core\u ext/kernel\u require.rb:54:in require':无法加载此类文件——mysql(LoadError)
root:#011from/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/site\u ruby/2.2.0/rubygems/core\u ext/kernel\u require.rb:54:in require'
root:#011from/scripts/nessus报告数据库/nessus-xml2db.rb:3:in`'

如果我从我的用户帐户或根用户帐户运行此脚本,代码将正常工作。

将以下行添加到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/ruby-2.2.1@global/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/ruby-2.2.1@global'
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'