我想知道如何在Ruby中的sudo su - #{su_user}
之後發送多個net-ssh命令的鏈。如何在Ruby中使用net-ssh sudo su
我的當前代碼在下面,並且掛起了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;直到sudo命令shell返回後,whoami纔會被執行。你有沒有考慮到這一點? – Casper