如何构建 telnet 中间件服务器

如何构建 telnet 中间件服务器

我需要将旧的 CRM 系统与新资产进行通信。Crm
系统只能通过 telnet 连接发送固定命令,但这个新资产只能通过 api rest 接收命令。
我计划拦截 telnet 连接,解析命令,修改它们并发送到 api,反之亦然。
有没有什么工具可以做到这一点?
如果没有……我认为更快的方法应该是使用一些 perl tcp 库。它需要提供“假”登录,然后将收到的行发送到子例程进行处理。

无论如何,我都会欢迎。莱安德罗。

答案1

这是我想到的(但它不起作用)

#!/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;
 }

当我强制我的客户端远程登录到这个“假”服务器时,我没有看到任何登录尝试,所以缺少了一些东西。我
正在考虑使用来自某些 Linux 的 telnetd 服务器来管理登录和会话建立,然后将收到的命令重定向到我的自定义脚本...
不知道怎么做,但我会尝试,任何想法都会受到欢迎。

相关内容