我正在尝试弄清楚如何在Ruby中发送多个net-ssh命令链,以在
我的当前代码如下,在
与此同时,在系统上,手动执行
任何帮助都将不胜感激!
sudo su - #{su_user}
之后执行。我的当前代码如下,在
send_data "#{password}\n"
之后,由于sudo su
命令而挂起。与此同时,在系统上,手动执行
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返回之后才被执行。你考虑到这点了吗? - Casper