L'esecuzione Password Change over Rubino Net-SSH
Domanda
Cerco di eseguire una modifica di password sopra Net-SSH e questo codice sembra bloccarsi:
Net::SSH.start(server_ip, "user", :verbose => :debug ) do |session|
session.process.popen3("ls") do |input, output, error|
["old_pass","test", "test"].each do |x|
input.puts x
end
end
end
So che le opere di connessione perché l'utilizzo di un semplice exec posso ottenere l'uscita dal ls sul server remoto, ma questo si blocca.
Tutte le idee?
L'ultimo messaggio da debug è che la chiave pubblica è riuscita.
Soluzione
Questo risolverà il problema ,, di notare che questo script per cambiare la password per un elenco di lista server nel file
#~~~~~~~~~~~~~~~~~~~~~~~
# Change Password is a simple script to change the password for a list of servers
# Coded by : Sabry Saleh
# License : GPL2
#~~~~~~~~~~~~~~~~~~~~~~~
#=-Notes-=
# You have to install ruby + net-ssh gems
# sudo gem install net-ssh
#~~~~~~~~~~~~~~~~~~~~~~~
require 'net/ssh'
host = IO.readlines('test1.txt') # full path of servers' list
port = 22 # SSH port
user = 'username' # username
i = 0
while i < host.length
Net::SSH.start(host[i], user , :password => "User pass" , :port=> port) do |ssh|
ssh.open_channel do |channel|
channel.on_request "exit-status" do |channel, data|
$exit_status = data.read_long
end
channel.request_pty do |channel, success|
channel.exec("sudo passwd UserName") # Logged user shuold be root or sudoers memeber
if success
channel.on_data do |channel, data|
puts data.inspect.chomp("\r\n")
channel.send_data("New pass\n") # put the New password you need to set
sleep 0.1
end
else
puts "FAILED!!"
end
end
channel.wait
puts "SUCCESS!!" if $exit_status == 0
end
end
i += 1
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow