使用paramiko运行bundle命令

时间:2014-11-19 14:23:08

标签: python ruby-on-rails paramiko

我正在尝试使用python的paramiko模块执行rake任务。

我有以下代码:

ssh_client = paramiko.SSHClient()
ssh_client.load_system_host_keys()
ssh_client.connect(myserver, username="root")
ssh_stdin, ssh_stdout, ssh_stderr = ssh_client.exec_command("cd /mnt/app-production/current ; export PATH=/usr/local/rubies/1.9.2-p320/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games ; bundle exec rake images:load_swatch")
print ssh_stdout.read()
print ssh_stderr.read()

但我得到以下输出:

rake aborted!
LoadError: no such file to load -- ruby-debug
/mnt/app-production/releases/20141113171842/config/application.rb:7:in `<top (required)>'
/mnt/app-production/releases/20141113171842/Rakefile:5:in `require'
/mnt/app-production/releases/20141113171842/Rakefile:5:in `<top (required)>'
(See full trace by running task with --trace)

这是什么错误?我怎样才能成功执行命令?

由于

2 个答案:

答案 0 :(得分:0)

我认为问题在于您尝试使用exec_command运行多个命令。 看一下这个: How do you execute multiple commands in a single session in Paramiko? (Python)

答案 1 :(得分:0)

我设法使用以下内容使其工作:

ssh_stdin, ssh_stdout, ssh_stderr = ssh_client.exec_command(" export PATH=/usr/local/rubies/1.9.2-p320/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games ; 
export RUBBER_ENV=production ; 
export RAILS_ENV=production; 
cd /mnt/app-production/current ; bundle exec rake images:load_swatch")