【发布时间】:2019-12-01 18:04:17
【问题描述】:
我正在使用 gem net-ssh。
连接已建立。我能够成功运行一些简单的脚本(如“pwd”、“ls”等),但是当我运行“restart”脚本时出现错误。
这是一个sn-p:
output = ssh.exec!("cd /home/csrhub/git/csrhub-api; ./bin/restart")
puts "#{output}"
还有输出:
./bin/restart:7:in
exec': No such file or directory - bundle (Errno::ENOENT) from ./bin/restart:7:in' 基于 .environment 文件确定为“开发”的环境。 正在加载 application.yml
这是发生错误的脚本。
#!/usr/bin/env ruby
require 'yaml'
require_relative '../app/models/environment.rb'
config = Environment.config('application')
exec "bundle exec pumactl --control-url tcp://127.0.0.1:#{config['control_port']} --control-token #{config['control_token']} phased-restart"
通过Putty 连接,当我运行相同的命令时,它会毫无问题地执行。
编辑
我Putty时PATH变量不一样:
/home/csrhub/.rbenv/shims:/home/csrhub/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin: /bin:/usr/games:/usr/local/games:/snap/bin
当我使用 net-ssh 运行时,路径是:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
【问题讨论】:
-
不要
cd-- 只运行/home/csrhub/git/csrhub-api/bin/restart -
@Zak 同样,还是不行。我得到同样的错误:(
-
检查服务器上
.bashrc中的内容,它可能包含特定于 ruby 的内容。将其复制到.bash_profile。交互式运行和非交互式运行是有区别的。 -
@philpirozhkov docs.google.com/document/d/… docs.google.com/document/d/…
-
似乎是
PATH问题。ssh-netshell 会话的PATH与 Putty 会话不同。这可能是找不到bundle命令的原因。