我正在尝试使用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)
这是什么错误?我怎样才能成功执行命令?
由于
答案 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")