我正在尝试编写一个Ruby脚本,它将ssh到服务器,运行给定的命令,并从中获取输出.这是我到目前为止所做的,主要是改编自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