我试图解决以下问题:连接到使用Netcat的指定的IP地址和端口号。在“输入密码:”提示时输入密码。然后远程机器回显2行文本(1随机)。我的任务是在超时之前将这些消息发送回主机并终止。连接到主机和重放输出
好像我应该能够用一个简单的脚本,它的命令行(本地)读取和将数据发回这些线路到远程机器做到这一点。我试着用perl脚本,看起来像:
#!/bin/perl -w;
use strict;
use warnings;
my $PASSWORD = "password";
my $timeout = 20;
my $timenow = time;
while (time - $timenow < $timeout) {
while (my $input = <STDIN>) {
if ($input =~ "password") {
print $PASSWORD . "\n";
} else {
print $input;
}
}
}
然后运行:
nc <address> <port> | ./perlscript.pl
这得到尽可能印刷出来的密码到我的终端,但随后失败。后周围的一些戳看来,密码是不实际被发送到远程机器做:
echo "PASSWORD" | nc <address> <port> | ./perlscript.pl
让我过去密码提示,打印出的远程计算机发送的消息,却又似乎他们实际上没有被送回。
没有人有任何想法如何,我可以实现这个目标?看来,使用某种mknode管的事情可能与I/O重放回远程计算机的帮助,但不知道该怎么做?
这也有可能,这种做法基本上是错误的,所以开到如何解决这个任何其他建议?
感谢,
马特
感谢您的链接。我同意用Netcat重定向stdin/stdout是一种痛苦!最后,我用Python中的telnetlib去做我需要做的事情,但考虑到我的问题在Perl中,因此你的答案与Perl相关,我接受你的解决方案,因为它与我所接近的为最后。谢谢。 – Choc13 2013-03-05 11:32:21