我可以让ruby通过特定的iface发送网络流量吗?

我正在编写一个脚本,它可以获取外部IP地址以及有关每个iface的其他信息。 我无法弄清楚如何让ruby通过特定的iface(例如eth0和wlan0)发送流量。 我目前正在使用open-uri库打开http://whatismyip.org并将其读入变量。

def get_external_ip begin open("http://whatismyip.org") { |f| return f.read } rescue return "none" end end 

有没有办法在脚本的运行时或脚本本身(理想情况下)中指定它?

您可以在Ruby Socket编程上查看本教程 。 但我怀疑它可以像open一样在高层次上完成。 通常从路由表中选择接口,具体取决于目标IP – 因此可能更容易修复/调整路由表。