Я пытаюсь решить следующую проблему: подключиться к заданному IP-адресу и номеру порта с помощью Netcat. Введите пароль при появлении запроса «Введите пароль:». Затем удаленная машина повторяет 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 может помочь с воспроизведением ввода-вывода обратно на удаленную машину, но не знаете, как это сделать?
Также вероятно, что этот подход в корне ошибочен, поэтому открыты для любых других предложений о том, как решить эту проблему?
Спасибо,
Мэтт