1

authorized_keysシステムからコマンドを実行ssh 192.168.1.101し、サーバー経由で接続できるように、プッシュを使用してサーバーを認証しました。

今、私は図書館で試しました、それは私のために働きませんでした

  Net::SSH.start("192.168.1.209",username) do |ssh|   @output=ssh.exec!("ls -l")  end

as、これは必須のユーザー名フィールドです。ユーザー名なしで欲しい。

だから、私はこれを試しました

    system('ssh 192.168.1.209 "ls -l"') 

コマンドを実行してくれます。@outputしかし、最初の例のように、出力を変数にしたいと思います。解決策を得ることができる宝石や方法はありますか?

4

3 に答える 3

1

すべての ssh 接続にはユーザー名が必要です。デフォルトは、システム アカウント名か、.ssh/config接続先のホストに指定されているものです。

現在のユーザー名はENV['USER']、アクセスする必要があるかのように設定する必要があります。

その接続に使用されているユーザー名に興味がssh -vある場合は、何が起こっているのかを説明する詳細モードを調べてみてください。

于 2012-02-24T15:49:22.420 に答える
0

次のように %x[] にパラメーターを渡すことができます。

1. dom = ‘www.ruby-rails.in‘
2. @whois = %x[whois #\{dom\}]
于 2012-02-24T15:58:50.483 に答える
0

逆引用符は「システム」関数と非常によく似た働きをしますが、重要な違いがあります。逆引用符で囲まれたシェル コマンドが実行され、結果として標準出力が出力されます。

したがって、次のステートメントは ssh 192.168.1.209 "ls -l" を実行し、ディレクトリ ファイルのリストを @output 変数に入れる必要があります。

@output = `ssh 192.168.1.209 "ls -l"`
于 2012-02-24T15:53:32.443 に答える