Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有本地Ruby方法来获取主机的默认网关?_Ruby - Fatal编程技术网

是否有本地Ruby方法来获取主机的默认网关?

是否有本地Ruby方法来获取主机的默认网关?,ruby,Ruby,作为标题。我之所以需要原生Ruby方法,是因为我希望代码能够跨Linux和MacOS移植。“ip路由显示”可以在Linux上使用,但MacOS没有“ip”命令 如果没有原生Ruby方法,也可以使用其他可移植方法。我不相信Socket可以向您提供您要查找的数据,但您可以在MacOS上使用netstat并进行平台检测,在命令之间进行选择: def gateway case Gem::Platform.local.os when "darwin" then `netstat -rn -f in

作为标题。我之所以需要原生Ruby方法,是因为我希望代码能够跨Linux和MacOS移植。“ip路由显示”可以在Linux上使用,但MacOS没有“ip”命令


如果没有原生Ruby方法,也可以使用其他可移植方法。

我不相信
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

检查类应该能够从那里获得一些有用的信息。可以使用此macos样式欢迎使用堆栈溢出。请阅读“”和“”,以及链接页和“”。你的问题问得不好。你找过了吗?如果不是,为什么?如果是的话,在哪里,为什么没有帮助?你写代码了吗?若否,原因为何?如果是这样,那么演示您所问的问题所需的最少代码是什么?可以有多个默认值,也许其中一个具有最低的度量。我认为这个应该解决这个问题:ip路由| sort-nk9 | awk'/default/{print$3;exit;}'