Ich versuche herauszufinden, wie eine Kette von mehreren net-ssh-Befehle nach einem sudo su - #{su_user}
in Ruby senden.Wie net-ssh sudo su in Ruby
Mein aktueller Code ist unten und hängt mit dem sudo su
Befehl, auch nach dem send_data "#{password}\n"
.
In der Zwischenzeit erfordert eine manuelle Ausführung von sudo su - admin2
auf dem System keine Passworteingabe.
Jede Hilfe wäre willkommen!
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
Sie wissen, dass Sie nicht Ketten Befehle wie, dass nach dem 'sudo' Befehl? Das letzte 'pwd; whoami wird erst ausgeführt, nachdem die Sudo-Befehls-Shell zurückgegeben wurde. Hast du das berücksichtigt? – Casper