Próbuję dowiedzieć się, jak wysłać łańcuch wielu poleceń net-ssh po sudo su - #{su_user}
w Ruby.W jaki sposób net-ssh sudo su w Ruby
Mój obecny kod znajduje się poniżej i zawiesza się za pomocą polecenia sudo su
, nawet po send_data "#{password}\n"
.
Tymczasem w systemie ręczne wykonanie sudo su - admin2
nie wymaga wprowadzenia hasła.
Każda pomoc zostanie doceniona!
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
Jesteś świadomy, że nie można komendy takie jak łańcuch, że po poleceniu 'sudo'? Ostatni 'pwd; whoami 'nie zostanie wykonane dopóki powłoka powłoki sudo nie powróci. Czy wziąłeś to pod uwagę? – Casper