我正在编写一个需要使用revssh
脚本在远程Raspberry PI上运行命令的应用程序。 revssh是一个自定义脚本,可以在某种程度上实现Revssh协议概念。它使用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
如果要执行的命令在本地计算机上运行,则此代码可以正常工作,但在我的情况下则不行。 所以任何想法或建议。
这里重要的是如何处理revssh
脚本使用ssh创建的新连接,如果脚本直接从终端运行,则在终端中管理。
修改
不工作我的意思是它仍然会提示输入密码,即使我把密码输入io。
答案 0 :(得分:0)
您可以使用类似Expect的库(例如RExpect,Expect4r)与其他进程进行交互。
与此相关的另一个问题:Is there an Expect equivalent gem for Ruby?