作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在编写一个需要使用 revssh
脚本在远程 Raspberry PI 上运行命令的应用程序。 revssh 是一个自定义脚本,它在某种程度上实现了 Revssh 协议(protocol)概念。它使用 ssh 反向隧道将命令从服务器发送到客户端。
我正在使用 Ruby 2.1,我尝试使用 IO.popen 来执行此操作,但它不起作用,因此我尝试了以下操作:
# revssh (short for reverse ssh ) enables the execution of remote commands
# from the server on connected clients, like the 'psu_pi_analytics' here. but it requires
# to enter a root password each time you want to run a command using 'revssh -c'
IO.popen('revssh -c psu_pi_analytics uname -a', 'w+') do|io|
io.puts 'password' # enter the password when prompted
puts io.gets
end
如果要执行的命令在本地计算机上运行,则此代码有效,但在我的情况下无效。所以任何想法或建议。
这里重要的是如何处理使用 ssh 的 revssh
脚本创建的新连接,如果脚本直接从终端运行,则在终端中进行管理。
编辑:
不工作是指它仍然提示输入密码,即使我将密码输入 io。
最佳答案
您可以使用类似 Expect 的库(例如 RExpect、Expect4r)与其他进程进行交互。
与此相关的另一个问题:Is there an Expect equivalent gem for Ruby?
关于ruby - 如何从 Ruby 将密码输入到另一个进程提示中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22280782/
我是一名优秀的程序员,十分优秀!