2016-05-24 12 views
0

のためのSSHの無限待ち、私はssh経由でいくつかのコマンドを実行するための単純な機能を持っているが、ここでは一例です:ルビーネット::パスワード

... 
Net::SSH.start(self.host, self.user, config: true, keys: [self.pem_key]) do| ssh | 
    result = ssh.exec! self.command 
    ... 

私は、リモートホストを設定するのを忘れたときにそれはケースを除いてOK作品(例として、キーを追加中の〜/ .ssh /認可)と私のアプリは、パスワード要求に貼り付け:?私はこのような場合のためにタイムアウトを設定するにはどうすればよいか、すべての(いくつかのエラーを発生させる時に、私はこのケースを除外することができますどのように

Completed 200 OK in 246ms (Views: 238.1ms | ActiveRecord: 4.3ms) 

Started POST "/xxx" for ::1 at 2016-05-24 13:43:11 +0300 
Processing by XXX::XXXController#run_now as JS 
Parameters: {"id"=>"2"} 
XXX::Check Load (0.3ms) SELECT ... 
(0.1ms) BEGIN 
SQL (0.3ms) UPDATE ... 
(0.3ms) COMMIT 
Text will be echoed in the clear. Please install the HighLine or Termios libraries to suppress echoed text. 
[email protected]_host's password: 

答えて

0

によるo documentationの場合、Net::SSH.startメソッドは、対話形式でパスワードを要求するのではなく、テスト(コード)が失敗するようにする:non_interactive => trueオプションを受け入れます。秘密鍵などの他の非対話型認証オプションは、もちろん動作します。

だから、

、これを試してみてください。

Net::SSH.start(self.host, self.user, config: true, non_interactive: true, keys: [self.pem_key]) do| ssh | 
    ... 
end