gpt4 book ai didi

ruby - 如何处理 ruby​​ 中的 URL 以提取组件部分(方案、用户名、密码、主机等)?

转载 作者:数据小太阳 更新时间:2023-10-29 07:43:35 25 4
gpt4 key购买 nike

我正在尝试使用 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")

是否有gem/stdlib 可以将URL 处理成这种格式?或者可以匹配不同部分的简单正则表达式?

注意:我知道并使用了 capistrano,但在这种情况下我需要较低级别的控制。

最佳答案

两者都是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

关于ruby - 如何处理 ruby​​ 中的 URL 以提取组件部分(方案、用户名、密码、主机等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4274213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com