我有一个whois服务,它允许我telnet到它并保持telnet连接打开,没有任何时间限制。 我必须通过telnet会话来完成数千个whois。 例如,我知道whois域名
echo "mydomain.com"; sleep 5| telnet whoismyserver.com 3454
我无法为数千个whois运行这个命令。 那么有什么办法可以保持telnet会话打开并传递参数?
我想保持一个持久的telnet连接。 并传递参数给它。 那可能吗? 例如,在上面的命令中,我只能通过“回声域”的参数一次,但我想通过回声的长列表,但以不同的时间间隔,而且也只能打开持续的远程login会话。 我想在不同的时间将所有的命令一个接一个地传递给一个telnet会话
为什么你不能在你的本地机器上运行whois和脚本/批处理呢? 或者只是telnet到另一个系统,并在那里编写脚本? 必须这样做,通过telnet路由到另一个系统似乎很糟糕。
话虽如此,这就是期望(@larsks的要点),所以如果你必须这样做的话,就用这个。
/编辑 – 我们不是你的谷歌,但这是一个开始: http : //expect.sourceforge.net/
您可能可以使用命名pipe道(fifo)
mkfifo my.pipe cat >my.pipe & cat my.fifo | telnet telnet whois.iana.org 43 echo "serverfault.com" >>my.fifo
这似乎在echo命令发送serverfault.com到whois服务器。 我没有访问允许持久连接的服务器,所以我不能testing它的多个名称。 但它应该是一个smop读取您的域名和回声他们的pipe道。
如果你想在一个文件中收集输出,那么只需redirect标准输出
cat my.fifo | telnet telnet whois.iana.org 43 >some.output.file
searchPerl模块NET :: Telnet的 CPAN存档并检查示例。
use Net::Telnet (); $t = new Net::Telnet (Timeout => 10, Prompt => '/bash\$ $/'); $t->open($host); $t->login($username, $passwd); @lines = $t->cmd("who"); print @lines;