【发布时间】:2012-11-22 04:37:51
【问题描述】:
我试图弄清楚如何在 Ruby 中的 sudo su - #{su_user} 之后发送多个 net-ssh 命令链。
我当前的代码在下面,并与sudo su 命令一起挂起,即使在send_data "#{password}\n" 之后也是如此。
同时,在系统上,手动执行sudo su - admin2 不需要输入密码。
任何帮助将不胜感激!
require 'rubygems'
require 'net/ssh'
host = 'hostA'
user = 'admin'
password = 'hostA_pwd'
su_user = 'Admin2'
Net::SSH.start(host, user, :password => password) do |ssh|
ssh.open_channel do |channel|
channel.request_pty do |c, success|
raise "could not request pty" unless success
channel.exec "pwd; whoami; sudo su - #{su_user} ; pwd ; whoami"
channel.on_data do |c_, data|
if data =~ /\[sudo\]/ || data =~ /Password/i
channel.send_data "#{password}\n"
else
result << data
end
end
puts result
end
end
ssh.loop
end
【问题讨论】:
-
你知道你不能在
sudo命令之后链接这样的命令吗?最后一个pwd; whoami直到 sudo 命令 shell 返回后才会执行。您考虑到这一点了吗?