Ruby:通过SSH执行php命令

时间:2018-02-13 12:52:08

标签: php ruby ssh

我正在尝试在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?

感谢您的帮助

1 个答案:

答案 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