我有一个脚本可以进行很多Whois查询。如果我只使用一个界面,我将被禁止。但我有eth1和eth1:0到eth1:13,所以有15个ip地址来轮换这些查询。
如何调用whois命令以便指定它将用于查询的接口?
我见过this post但是我无法添加路由表,因为我的接口已经有了用于指定网关的路由。
e.g。 route add -net x.x.x.32 / 29 gw x.x.X.33 dev eth1
所以我的计划是以某种方式改变目标端口43的路由,然后进行查询,然后删除该路由,设置另一个,进行其他查询等。有点像这样:
route add -port 43 dev eth1
whois example.com
route del -port 43 dev eth1
route add -port 43 dev eth1:0
whois example.org
route del -port 43 dev eth1:0
route add -port 43 dev eth1:1
whois example.net
route del -port 43 dev eth1:1
...
WARNING: -port does not work indeed.
那么,在不弄乱服务器其余流量的情况下,实现这一目标的最简单方法是什么?
谢谢!
答案 0 :(得分:0)
好的,我回答了我自己的问题。
这不是一个适用于除了whois之外的所有其他事情的解决方案,但它可以为许多协议提供技巧。
使用CURL进行查询,因为curl有一个Interface选项。
当然,你需要有一个像this one这样的whois服务器列表。
e.g。在perl:
use WWW::Curl::Easy;
my $curl = WWW::Curl::Easy->new;
$curl->setopt(CURLOPT_URL, "whois.crsnic.net:43");
$curl->setopt(CURLOPT_INTERFACE, "1.2.3.4");
$curl->setopt(CURLOPT_CUSTOMREQUEST, "example.com\r\n");
my $curldata = "";
$curl->setopt(CURLOPT_WRITEDATA, \$curldata);
$curl->perform;
print("$curldata\n");
然后你可以解析$ curldata以找到瘦的whois服务器以及它上面的相同内容。