如何跳过不正确的 ssh 密码
How to skip incorrect ssh passwords
我有一个脚本可以登录 1000 多个无线设备并进行审核。他们的一些密码已被更改。我想跳过这些单元而不具体告诉 ruby 要跳过哪个 ip。该脚本是多线程的并且会挂起,因为当 ruby 进入一个单元并使用错误的密码时,它会要求输入密码并且整个脚本都会停止。
*如何跳过或挽救 ruby net/ssh
的错误密码尝试
Net::SSH.start('ip','user',password: 'pass', paranoid: false) do |ssh|
end
密码输入错误会这样提示
admin@192.168.1.1's password:
module Net::SSH::PromptMethods::Clear
def prompt(prompt,echo = false)
raise Error, "Details"
# $stdout.print(prompt)
# $stdout.flush
# $stdin.gets.chomp
end
end
最终使用了与此类似的东西
在最新的net-ssh (2.10.0.beta1)中,增加了新的选项:non_interactive来忽略密码提示。这里是 the details.
对我有用。对于你的情况应该是
Net::SSH.start('ip','user',password: 'pass', paranoid: false, :non_interactive=>true) do |ssh|
end
选项={
密码:密码,
number_of_password_prompts: 0,
超时:SSH_TIMEOUT
}
尝试使用'number_of_password_prompts: 0,',可能会完美
我有一个脚本可以登录 1000 多个无线设备并进行审核。他们的一些密码已被更改。我想跳过这些单元而不具体告诉 ruby 要跳过哪个 ip。该脚本是多线程的并且会挂起,因为当 ruby 进入一个单元并使用错误的密码时,它会要求输入密码并且整个脚本都会停止。
*如何跳过或挽救 ruby net/ssh
的错误密码尝试Net::SSH.start('ip','user',password: 'pass', paranoid: false) do |ssh|
end
密码输入错误会这样提示
admin@192.168.1.1's password:
module Net::SSH::PromptMethods::Clear
def prompt(prompt,echo = false)
raise Error, "Details"
# $stdout.print(prompt)
# $stdout.flush
# $stdin.gets.chomp
end
end
最终使用了与此类似的东西
在最新的net-ssh (2.10.0.beta1)中,增加了新的选项:non_interactive来忽略密码提示。这里是 the details.
对我有用。对于你的情况应该是
Net::SSH.start('ip','user',password: 'pass', paranoid: false, :non_interactive=>true) do |ssh|
end
选项={ 密码:密码, number_of_password_prompts: 0, 超时:SSH_TIMEOUT }
尝试使用'number_of_password_prompts: 0,',可能会完美