gpt4 book ai didi

ruby-on-rails - Bash to Ruby - 使用 whois 和 grep 命令获取列表

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:18 25 4
gpt4 key购买 nike

我很好奇是否有一种简单的方法可以将 bash 命令转换为 ruby​​ 脚本。

如果您在命令行中键入此命令,您将获得一个 IP 网络列表。

whois -h whois.radb.net -- '-i origin AS35995' | grep -Eo "([0-9.]+){4}/[0-9]+"

有没有一种简单的方法可以在 Ruby 中做类似的事情,还是我必须手动编写代码?

对于菜鸟问题​​,我们深表歉意,在此先感谢您的帮助!

最佳答案

您可以保留命令原样并使用@AndreyDeineko 的有效解决方案。

您可以使用 String#scan 在 Ruby 中执行 grep 命令:

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: noc@twitter.com
# mnt-by: MAINT-AS13414
# changed: ck@twitter.com 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 现在是一个字符串数组,包含来自 whoisroute 值。

最后,您似乎还可以用这个 gem 执行 whois .

关于ruby-on-rails - Bash to Ruby - 使用 whois 和 grep 命令获取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41937047/

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