我有以下脚本:
#!/usr/bin/env ruby
require 'rubygems'
require 'net/ssh'
Net::SSH.start('host1', 'root', :password => "mypassword1") do |ssh|
stdout = ""
ssh.exec("cd /var/example/engines/")
ssh.exec!( "pwd" ) do |channel, stream, data|
stdout << data if stream == :stdout
end
puts stdout
ssh.loop
end
我得到 /root
,而不是 /var/example/engines/
最佳答案
ssh.exec("cd /var/example/engines/; pwd")
这将执行 cd
命令,然后在新目录中执行 pwd
命令。
我不是 ruby 专家,但我猜可能有更优雅的解决方案。
关于ruby - 如何在同一个 ssh session 中执行 2 个或更多命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3671392/