如何使用' src'从`ip route`命令的输出中选择IP地址?

时间:2017-06-30 09:46:14

标签: ruby linux

如果我在终端上运行命令,则会给出IP地址值

ip route get 8.8.8.8 | grep -oP '(?<=src )(\d{1,3}.){4}'

但是当我使用&#39; 2&gt;&amp; 1&#39;然后它返回空字符串:

output = ''
IO.popen("ip route get 8.8.8.8 | grep -oP '(?<=src )(\d{1,3}.){4}' 2>&1", 'r+') do |f|
  output = f.read.strip
end
puts output.inspect

请指导我了解上述情况。 我需要添加哪些修改来获取IP地址。

1 个答案:

答案 0 :(得分:2)

与重定向无关。在Ruby中,必须转义字符串中的反斜杠。只需将\替换为\\

即可
output = ''
IO.popen("ip route get 8.8.8.8 | grep -oP '(?<=src )(\\d{1,3}.){4}' 2>&1", 'r+') do |f|
  output = f.read.strip
end
puts output.inspect