3

ruby(およびNet :: SSH)を使用してサーバーに接続し、いくつかのタスクを実行するプログラムを作成しようとしています。サーバーの詳細は、次のように提供されます。

ssh://user:pass@host:port (for a host that does not yet have SSH keys)

また

user@host

Net :: SSHは、次の形式を想定しています。

Net::SSH.start('host', 'user', :password => "password")

URLをこの形式に処理できるgem/stdlibはありますか?または、さまざまなパーツに一致する単純な正規表現ですか?

注:私はcapistranoを認識して使用していますが、この場合はより低いレベルの制御が必要です。

4

1 に答える 1

13

URIAddressable::URIはどちらも、 URLを解析して、それらをコンポーネントに分解することができます。

URIはRubyの標準ライブラリに含まれています。これは素晴らしいですが、Addressable :: URIにはより多くの機能があり、URLで多くの作業を行う必要があるときに使用します。

require 'addressable/uri'

uri = Addressable::URI.parse('ssh://user:pass@www.example.com:81') 
uri.host # => "www.example.com"
uri.user # => "user"
uri.password # => "pass"
uri.scheme # => "ssh"
uri.port # => 81

require 'uri'
uri = URI.parse('ssh://user:pass@www.example.com:81')
uri.host # => "www.example.com"
uri.user # => "user"
uri.password # => "pass"
uri.scheme # => "ssh"
uri.port # => 81
于 2010-11-25T08:54:41.923 に答える