我正在使用 Ruby,我有以下代码用于 ssh-ing 到路由器并运行一系列存储在数组中的命令:
result = PTY.open do |masterIO, slaveFile|
r, w = IO.pipe
slaveFile.raw!
pid = spawn(sshCommand, :in=>r, :out=>slaveFile)
r.close; slaveFile.close;
output = ""
@commands.each do |subCommand|
w.puts subCommand
masterIO.each_line { |line| output += line }
end
next ouput
end
我的问题是masterIO.each_line { ... }
永远挂起。在上面的代码中,我想我需要关闭w
,但我仍然不确定如何编写它以使其表现得像我想要的那样。
注意:您必须记住 subCommands 不是即时的,所以我需要某种方式等到第一个命令执行完毕后再编写第二个命令。
编辑 :
我想我可以在每个命令之间用'&&'连接所有命令。这将允许我按顺序运行它们,但我仍然不确定如何使读取这些命令的输出成功