Вы можете оставить команду как и использовать @ действительное решение AndreyDeineko в.
Можно выполнить команду Grep внутри Руби String#scan
:
abc = 'AS35995'
whois = `whois -h whois.radb.net -- '-i origin #{abc}'`
# route: 8.25.194.0/23
# descr: Twitter
# origin: AS35995
# admin-c: NETWO3685-ARIN
# tech-c: NETWO3685-ARIN
# notify: [email protected]
# mnt-by: MAINT-AS13414
# changed: [email protected] 20121028 #17:03:09Z
# source: RADB
# route: 8.25.196.0/23
# descr: Twitter
# origin: AS35995
# ....
p routes = whois.scan(/[\d\.]{7,}\/\d+/)
#=> ["8.25.194.0/23", "8.25.196.0/23", "192.133.78.0/23", "8.25.194.0/24", "8.25.195.0/24", "8.25.196.0/24", "8.25.197.0/24", "185.45.4.0/24", "103.252.112.0/23", "185.45.4.0/23"]
Это регулярное выражение просто, но может соответствовать слишком много. Из этого link, он выглядит более точное регулярное выражение будет:
/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/\d+\b/
Маршрут теперь массив строк, содержащий route
значения из whois
.
Наконец, кажется, вы также можете выполнить whois
с этим gem.
приятно! благодаря! Это именно то, что я искал! – CottonEyeJoe
как обычно - идеальный, включая ответ. +1 к золоту;) –
@ AndreyDeineko: Спасибо! Это был хороший месяц. Моя следующая цель - опередить JonSkeet в январе [http://stackexchange.com/leagues/1/month/stackoverflow/2017-01-01/6419007#6419007) 1 день! :) –