如何跳过不正确的 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,',可能会完美