所以我一直在尝试使用 Net::SSH::Multi 通过 SSH 登录到多台计算机,然后使用 session.exec("some_command") 在远程计算机上执行 shell 命令。
代码:
#!/usr/bin/ruby
require 'rubygems'
require 'net/ssh'
require 'net/ssh/multi'
Net::SSH::Multi.start do |session|
# Connect to remote machines
### Change this!!###
session.use 'user@server'
loop = 1
while loop == 1
printf(">> ")
command = gets.chomp
if command == "quit" then
loop = 0
else
session.exec(command)do |ch, stream, data|
puts "[#{ch[:host]} : #{stream}] #{data}"
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
我目前遇到的问题是,当我在交互式提示中输入命令时,“session.exec”不会返回输出 util 我退出程序,我想知道是否有人遇到过这个问题并可以告诉我我该如何解决这个问题?
在session.exec之后添加session.loop可以让程序等待输出。
例如:
session.exec(command)do |ch, stream, data|
puts "[#{ch[:host]} : #{stream}] #{data}"
end
session.loop
# Or session.wait also does the same job.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2667 次 |
| 最近记录: |