【问题标题】:Is there a native Ruby method to get default gateway of host machine?是否有本地 Ruby 方法来获取主机的默认网关?
【发布时间】:2017-09-28 22:00:15
【问题描述】:

作为标题。我想要一个原生 Ruby 方法的原因是因为我希望代码可以跨 Linux 和 MacOS 移植。 “ip route show”可以在Linux上使用,但MacOS没有“ip”命令。

如果没有原生 Ruby 方法,其他可移植的方法也是可以接受的。

【问题讨论】:

标签: ruby


【解决方案1】:

我不相信Socket 可以为您提供您正在寻找的数据,但您可以在 MacOS 上使用netstat 并进行平台检测以在命令之间进行选择:

def gateway
  case Gem::Platform.local.os
  when "darwin" then `netstat -rn -f inet | grep 'default' | awk '{print $2}'`
  else `ip route | awk '/default/{print $3}'`
  end.chomp
end

【讨论】:

  • 可以有多个默认值,也许其中一个具有最低的指标。我认为这个可以解决问题:ip route |排序 -nk 9 |awk '/default/{打印 $3;退出;}'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 2016-11-30
  • 2011-02-15
相关资源
最近更新 更多