加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby – Expect和Pty的问题

发布时间:2020-12-17 03:43:14 所属栏目:百科 来源:网络整理
导读:我正在尝试编写一个 Ruby脚本,它将ssh到服务器,运行给定的命令,并从中获取输出.这是我到目前为止所做的,大部分改编自 Programming Ruby书: require 'pty'require 'expect'$expect_verbose = truePTY.spawn("ssh root@x.y") do |reader,writer,pid| reader.e
我正在尝试编写一个 Ruby脚本,它将ssh到服务器,运行给定的命令,并从中获取输出.这是我到目前为止所做的,大部分改编自 Programming Ruby书:

require 'pty'
require 'expect'

$expect_verbose = true
PTY.spawn("ssh root@x.y") do |reader,writer,pid|
  reader.expect(/root@x.y's password:.*/)
  writer.puts("password")
  reader.expect(/.*/)
  writer.puts("ls -l")
  reader.expect(/.*/)
  answer = reader.gets
  puts "Answer = #{answer}"
end

不幸的是,我要回来的是这样的:

Answer = .y's password:

知道我做错了什么以及如何缓解这个问题?

解决方法

为此,我建议使用net-ssh gem:sudo gem install net-ssh: http://net-ssh.rubyforge.org/ssh/v2/api/index.html

代码有点像这样:

require 'rubygems'
require 'net/ssh'

Net::SSH.start('your-server','username',:password => "password") do |ssh|
  puts ssh.exec!("ls -la")
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读