我正在尝试在ruby shell中运行PHP脚本。虽然如果我在ssh终端中直接使用代码片段它工作正常,但如果使用ruby执行它会返回错误:
zsh:1: command not found: php
使用下面这个脚本和ls
之类的命令工作正常。
require 'rubygems'
require 'net/ssh'
host = "abc.de"
user = "user_xy"
pass = "user_pass"
begin
Net::SSH.start(host, user, :password => pass) do |ssh|
$a = ssh.exec! "cd xy_dir && php abc.phar do_this"
ssh.close
puts $a
end
rescue
puts "Unable to connect to #{host}."
end
如何使用Net::SSH
运行PHP?
感谢您的帮助
答案 0 :(得分:1)
我认为问题不在于Ruby本身,而在于任何语言的SSH实现。当使用语言的ssh支持来创建ssh会话时,它不会创建登录shell (它会读取.bashrc
等初始化文件),而是创建一个较低级别的接口。机。
因此,当与Ruby的Net::SSH
连接时,您将从普通shell使用中获得的某些功能将会丢失。
我在想通过调用bash -l -c "[the commands]"
,强制使用bash
的{{1}}标志和-l
命令登录shell,可能有办法解决这个问题。说明符,但无法使其工作。
我确实发现了另一个SO问题,其答案讨论了一个可能不值得尝试的尴尬解决方法:ruby net-ssh login shell。