Мне нужно связать старую систему crm с новым активом.
Система Crm может отправлять фиксированные команды только через соединение Telnet, но этот новый актив может принимать команды только через api rest.
Я планирую перехватить соединение Telnet, проанализировать команды, изменить их и отправить в API и наоборот.
Есть ли для этого какой-нибудь инструмент?
Если нет ... Я думаю, что быстрее следует использовать некоторую библиотеку perl tcp.
Он должен предоставить "фальшивый" логин, а затем отправить полученные строки в подпрограмму для обработки.
Любой вариант будет приемлемым. Леандро.
Вот что я придумал (это не работает)
#!/usr/bin/perl -w
use IO::Socket;
use Net::hostent; # for OO version of gethostbyaddr
$PORT = 9000; # pick something not in use
$prompt="MA5680T>";
$server = IO::Socket::INET->new( Proto => 'tcp',
LocalPort => $PORT,
Listen => SOMAXCONN,
Reuse => 1);
die "can't setup server" unless $server;
print "[Server $0 accepting clients]\n";
while ($client = $server->accept()) {
$client->autoflush(1);
#print $client "Welcome to $0; type help for command list.\n";
#$hostinfo = gethostbyaddr($client->peeraddr);
#printf "[Connect from %s]\n", $hostinfo->name || $client->peerhost;
print $client "\n";
print $client "Warning: Telnet is not a secure protocol, and it is recommended to use Stelnet.";
print $client "\n";
print $client "\n";
print $client ">>User name:";
while ( <$client>) {
next unless /\S/; # blank line
print "\nlinea :$_";
if (/quit|exit/i) { last; }
elsif (/leo/i) { printf $client "\n>>User password:"; }
elsif (/password/i) { printf $client "\n$prompt"; }
else {
print $client "\n$prompt";
}
} continue {
#print $client $prompt;
}
close $client;
}
Что-то упущено, так как я не вижу никаких попыток входа в систему при принудительном подключении моего клиента по телнету к этому "фальшивому" серверу.
Я рассматриваю возможность использования сервера telnetd из какого-нибудь Linux для управления входом в систему и стабилизацией сеанса, а затем перенаправлением полученных команд в мой собственный скрипт ...
Не знаю как, но я попробую, любая идея будет приветствоваться.